@purveyors/sdk 0.44.0 → 0.45.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 CHANGED
@@ -653,7 +653,7 @@ interface paths {
653
653
  patch?: never;
654
654
  trace?: never;
655
655
  };
656
- "/v1/reference-profiles/imports": {
656
+ "/v1/reference-profiles/{id}/revisions/{revisionId}/preview": {
657
657
  parameters: {
658
658
  query?: never;
659
659
  header?: never;
@@ -662,24 +662,25 @@ interface paths {
662
662
  };
663
663
  get?: never;
664
664
  put?: never;
665
- /** Create a reference profile from an Artisan file */
665
+ /** Preview a constrained planned profile from an Artisan reference */
666
666
  post: {
667
667
  parameters: {
668
668
  query?: never;
669
- header: {
670
- "idempotency-key": string;
669
+ header?: never;
670
+ path: {
671
+ id: string;
672
+ revisionId: string;
671
673
  };
672
- path?: never;
673
674
  cookie?: never;
674
675
  };
675
676
  requestBody: {
676
677
  content: {
677
- "application/json": components["schemas"]["ReferenceProfileImportRequest"];
678
+ "application/json": components["schemas"]["ReferenceProfileGenerationRequest"];
678
679
  };
679
680
  };
680
681
  responses: {
681
- /** @description Created reference profile */
682
- 201: {
682
+ /** @description Deterministic preview without persistence */
683
+ 200: {
683
684
  headers: {
684
685
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
685
686
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -690,7 +691,7 @@ interface paths {
690
691
  [name: string]: unknown;
691
692
  };
692
693
  content: {
693
- "application/json": components["schemas"]["ReferenceProfileResponse"];
694
+ "application/json": components["schemas"]["ReferenceProfileGenerationPreviewResponse"];
694
695
  };
695
696
  };
696
697
  /** @description Invalid request */
@@ -777,7 +778,7 @@ interface paths {
777
778
  patch?: never;
778
779
  trace?: never;
779
780
  };
780
- "/v1/reference-profiles/from-roast": {
781
+ "/v1/reference-profiles/{id}/revisions/{revisionId}/generated": {
781
782
  parameters: {
782
783
  query?: never;
783
784
  header?: never;
@@ -786,23 +787,26 @@ interface paths {
786
787
  };
787
788
  get?: never;
788
789
  put?: never;
789
- /** Snapshot an executed roast as a reference profile */
790
+ /** Save a planned reference with immutable parent lineage */
790
791
  post: {
791
792
  parameters: {
792
793
  query?: never;
793
794
  header: {
794
795
  "idempotency-key": string;
795
796
  };
796
- path?: never;
797
+ path: {
798
+ id: string;
799
+ revisionId: string;
800
+ };
797
801
  cookie?: never;
798
802
  };
799
803
  requestBody: {
800
804
  content: {
801
- "application/json": components["schemas"]["ReferenceProfileFromRoastRequest"];
805
+ "application/json": components["schemas"]["ReferenceProfileGenerationRequest"];
802
806
  };
803
807
  };
804
808
  responses: {
805
- /** @description Created immutable roast snapshot */
809
+ /** @description Saved planned reference */
806
810
  201: {
807
811
  headers: {
808
812
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -901,29 +905,28 @@ interface paths {
901
905
  patch?: never;
902
906
  trace?: never;
903
907
  };
904
- "/v1/reference-profiles/{id}/roast-links/{roastId}": {
908
+ "/v1/reference-profiles/{id}/revisions/{revisionId}/export": {
905
909
  parameters: {
906
910
  query?: never;
907
911
  header?: never;
908
912
  path?: never;
909
913
  cookie?: never;
910
914
  };
911
- get?: never;
912
- /** Link a reference profile to an owned roast */
913
- put: {
915
+ /** Download an unsigned Purveyors-generated Artisan background profile */
916
+ get: {
914
917
  parameters: {
915
918
  query?: never;
916
919
  header?: never;
917
920
  path: {
918
921
  id: string;
919
- roastId: number;
922
+ revisionId: string;
920
923
  };
921
924
  cookie?: never;
922
925
  };
923
926
  requestBody?: never;
924
927
  responses: {
925
- /** @description Linked */
926
- 204: {
928
+ /** @description Generated .alog content, not an executed roast */
929
+ 200: {
927
930
  headers: {
928
931
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
929
932
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -933,7 +936,9 @@ interface paths {
933
936
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
934
937
  [name: string]: unknown;
935
938
  };
936
- content?: never;
939
+ content: {
940
+ "application/json": components["schemas"]["ReferenceProfileGenerationExportResponse"];
941
+ };
937
942
  };
938
943
  /** @description Invalid request */
939
944
  400: {
@@ -1013,22 +1018,41 @@ interface paths {
1013
1018
  429: components["responses"]["ApiRateLimitExceeded"];
1014
1019
  };
1015
1020
  };
1021
+ put?: never;
1016
1022
  post?: never;
1017
- /** Unlink a reference profile from an owned roast */
1018
- delete: {
1023
+ delete?: never;
1024
+ options?: never;
1025
+ head?: never;
1026
+ patch?: never;
1027
+ trace?: never;
1028
+ };
1029
+ "/v1/reference-profiles/imports": {
1030
+ parameters: {
1031
+ query?: never;
1032
+ header?: never;
1033
+ path?: never;
1034
+ cookie?: never;
1035
+ };
1036
+ get?: never;
1037
+ put?: never;
1038
+ /** Create a reference profile from an Artisan file */
1039
+ post: {
1019
1040
  parameters: {
1020
1041
  query?: never;
1021
- header?: never;
1022
- path: {
1023
- id: string;
1024
- roastId: number;
1042
+ header: {
1043
+ "idempotency-key": string;
1025
1044
  };
1045
+ path?: never;
1026
1046
  cookie?: never;
1027
1047
  };
1028
- requestBody?: never;
1048
+ requestBody: {
1049
+ content: {
1050
+ "application/json": components["schemas"]["ReferenceProfileImportRequest"];
1051
+ };
1052
+ };
1029
1053
  responses: {
1030
- /** @description Unlinked */
1031
- 204: {
1054
+ /** @description Created reference profile */
1055
+ 201: {
1032
1056
  headers: {
1033
1057
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1034
1058
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -1038,7 +1062,9 @@ interface paths {
1038
1062
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1039
1063
  [name: string]: unknown;
1040
1064
  };
1041
- content?: never;
1065
+ content: {
1066
+ "application/json": components["schemas"]["ReferenceProfileResponse"];
1067
+ };
1042
1068
  };
1043
1069
  /** @description Invalid request */
1044
1070
  400: {
@@ -1118,12 +1144,13 @@ interface paths {
1118
1144
  429: components["responses"]["ApiRateLimitExceeded"];
1119
1145
  };
1120
1146
  };
1147
+ delete?: never;
1121
1148
  options?: never;
1122
1149
  head?: never;
1123
1150
  patch?: never;
1124
1151
  trace?: never;
1125
1152
  };
1126
- "/v1/profile-comparisons": {
1153
+ "/v1/reference-profiles/from-roast": {
1127
1154
  parameters: {
1128
1155
  query?: never;
1129
1156
  header?: never;
@@ -1132,22 +1159,24 @@ interface paths {
1132
1159
  };
1133
1160
  get?: never;
1134
1161
  put?: never;
1135
- /** Compare two immutable profile revisions */
1162
+ /** Snapshot an executed roast as a reference profile */
1136
1163
  post: {
1137
1164
  parameters: {
1138
1165
  query?: never;
1139
- header?: never;
1166
+ header: {
1167
+ "idempotency-key": string;
1168
+ };
1140
1169
  path?: never;
1141
1170
  cookie?: never;
1142
1171
  };
1143
1172
  requestBody: {
1144
1173
  content: {
1145
- "application/json": components["schemas"]["ProfileComparisonRequest"];
1174
+ "application/json": components["schemas"]["ReferenceProfileFromRoastRequest"];
1146
1175
  };
1147
1176
  };
1148
1177
  responses: {
1149
- /** @description Deterministic measured deltas */
1150
- 200: {
1178
+ /** @description Created immutable roast snapshot */
1179
+ 201: {
1151
1180
  headers: {
1152
1181
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1153
1182
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -1158,7 +1187,7 @@ interface paths {
1158
1187
  [name: string]: unknown;
1159
1188
  };
1160
1189
  content: {
1161
- "application/json": components["schemas"]["ProfileComparisonResponse"];
1190
+ "application/json": components["schemas"]["ReferenceProfileResponse"];
1162
1191
  };
1163
1192
  };
1164
1193
  /** @description Invalid request */
@@ -1245,7 +1274,7 @@ interface paths {
1245
1274
  patch?: never;
1246
1275
  trace?: never;
1247
1276
  };
1248
- "/v1/account-deletion": {
1277
+ "/v1/reference-profiles/{id}/roast-links/{roastId}": {
1249
1278
  parameters: {
1250
1279
  query?: never;
1251
1280
  header?: never;
@@ -1253,273 +1282,343 @@ interface paths {
1253
1282
  cookie?: never;
1254
1283
  };
1255
1284
  get?: never;
1256
- put?: never;
1257
- /**
1258
- * Accept deletion of the authenticated account
1259
- * @description Cryptographically validates a recent purpose-bound coffee-app assertion and atomically creates or replays the permanent Parchment-owned deletion operation.
1260
- */
1261
- post: {
1285
+ /** Link a reference profile to an owned roast */
1286
+ put: {
1262
1287
  parameters: {
1263
1288
  query?: never;
1264
1289
  header?: never;
1265
- path?: never;
1266
- cookie?: never;
1267
- };
1268
- requestBody: {
1269
- content: {
1270
- "application/json": {
1271
- assertion: string;
1272
- };
1290
+ path: {
1291
+ id: string;
1292
+ roastId: number;
1273
1293
  };
1294
+ cookie?: never;
1274
1295
  };
1296
+ requestBody?: never;
1275
1297
  responses: {
1276
- /** @description Existing accepted deletion operation */
1277
- 200: {
1278
- headers: {
1279
- /** @description Sensitive lifecycle responses are never cached */
1280
- "Cache-Control"?: string;
1281
- [name: string]: unknown;
1282
- };
1283
- content: {
1284
- "application/json": components["schemas"]["AccountDeletionOperation"];
1285
- };
1286
- };
1287
- /** @description Deletion accepted; the durable worker owns convergence */
1288
- 202: {
1298
+ /** @description Linked */
1299
+ 204: {
1289
1300
  headers: {
1290
- /** @description Sensitive lifecycle responses are never cached */
1291
- "Cache-Control"?: string;
1301
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1302
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1303
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1304
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1305
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1306
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1292
1307
  [name: string]: unknown;
1293
1308
  };
1294
- content: {
1295
- "application/json": components["schemas"]["AccountDeletionOperation"];
1296
- };
1309
+ content?: never;
1297
1310
  };
1298
- /** @description Malformed assertion request */
1311
+ /** @description Invalid request */
1299
1312
  400: {
1300
1313
  headers: {
1314
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1315
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1316
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1317
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1318
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1319
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1301
1320
  [name: string]: unknown;
1302
1321
  };
1303
1322
  content: {
1304
1323
  "application/json": components["schemas"]["ErrorResponse"];
1305
1324
  };
1306
1325
  };
1307
- /** @description A valid Supabase user session is required */
1326
+ /** @description Authentication required */
1308
1327
  401: {
1309
1328
  headers: {
1329
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1330
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1331
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1332
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1333
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1334
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1310
1335
  [name: string]: unknown;
1311
1336
  };
1312
1337
  content: {
1313
1338
  "application/json": components["schemas"]["ErrorResponse"];
1314
1339
  };
1315
1340
  };
1316
- /** @description Recent account-deletion reauthentication is invalid */
1341
+ /** @description Insufficient entitlement (plan or role) */
1317
1342
  403: {
1318
1343
  headers: {
1344
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1345
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1346
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1347
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1348
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1349
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1319
1350
  [name: string]: unknown;
1320
1351
  };
1321
1352
  content: {
1322
1353
  "application/json": components["schemas"]["ErrorResponse"];
1323
1354
  };
1324
1355
  };
1325
- /** @description Account deletion is blocked by deterministic local work */
1326
- 409: {
1356
+ /** @description Reference profile or source roast not found */
1357
+ 404: {
1327
1358
  headers: {
1359
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1360
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1361
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1362
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1363
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1364
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1328
1365
  [name: string]: unknown;
1329
1366
  };
1330
1367
  content: {
1331
1368
  "application/json": components["schemas"]["ErrorResponse"];
1332
1369
  };
1333
1370
  };
1334
- /** @description The activated lifecycle or storage is unavailable */
1335
- 503: {
1371
+ /** @description Revision, idempotency, or concurrency conflict */
1372
+ 409: {
1336
1373
  headers: {
1374
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1375
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1376
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1377
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1378
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1379
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1337
1380
  [name: string]: unknown;
1338
1381
  };
1339
1382
  content: {
1340
1383
  "application/json": components["schemas"]["ErrorResponse"];
1341
1384
  };
1342
1385
  };
1386
+ 429: components["responses"]["ApiRateLimitExceeded"];
1343
1387
  };
1344
1388
  };
1345
- delete?: never;
1346
- options?: never;
1347
- head?: never;
1348
- patch?: never;
1349
- trace?: never;
1350
- };
1351
- "/v1/billing/checkout-sessions": {
1352
- parameters: {
1353
- query?: never;
1354
- header?: never;
1355
- path?: never;
1356
- cookie?: never;
1357
- };
1358
- get?: never;
1359
- put?: never;
1360
- /** Create or replay an embedded Stripe Checkout Session */
1361
- post: {
1389
+ post?: never;
1390
+ /** Unlink a reference profile from an owned roast */
1391
+ delete: {
1362
1392
  parameters: {
1363
1393
  query?: never;
1364
1394
  header?: never;
1365
- path?: never;
1366
- cookie?: never;
1367
- };
1368
- requestBody: {
1369
- content: {
1370
- "application/json": {
1371
- /** Format: uuid */
1372
- requestId: string;
1373
- purchaseItems: {
1374
- purchaseKey: string;
1375
- /** @default 1 */
1376
- quantity?: number;
1377
- }[];
1378
- };
1395
+ path: {
1396
+ id: string;
1397
+ roastId: number;
1379
1398
  };
1399
+ cookie?: never;
1380
1400
  };
1401
+ requestBody?: never;
1381
1402
  responses: {
1382
- /** @description Created or replayed Checkout Session */
1383
- 200: {
1403
+ /** @description Unlinked */
1404
+ 204: {
1384
1405
  headers: {
1385
- /** @description Billing responses are never shared-cacheable */
1386
- "Cache-Control"?: string;
1406
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1407
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1408
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1409
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1410
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1411
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1387
1412
  [name: string]: unknown;
1388
1413
  };
1389
- content: {
1390
- "application/json": components["schemas"]["BillingCheckoutSession"];
1391
- };
1414
+ content?: never;
1392
1415
  };
1393
- /** @description Unknown product or definite provider rejection */
1416
+ /** @description Invalid request */
1394
1417
  400: {
1395
1418
  headers: {
1419
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1420
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1421
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1422
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1423
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1424
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1396
1425
  [name: string]: unknown;
1397
1426
  };
1398
1427
  content: {
1399
1428
  "application/json": components["schemas"]["ErrorResponse"];
1400
1429
  };
1401
1430
  };
1402
- /** @description A valid Supabase user session is required */
1431
+ /** @description Authentication required */
1403
1432
  401: {
1404
1433
  headers: {
1405
- [name: string]: unknown;
1406
- };
1434
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1435
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1436
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1437
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1438
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1439
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1440
+ [name: string]: unknown;
1441
+ };
1407
1442
  content: {
1408
1443
  "application/json": components["schemas"]["ErrorResponse"];
1409
1444
  };
1410
1445
  };
1411
- /** @description The operation conflicts with current durable state */
1412
- 409: {
1446
+ /** @description Insufficient entitlement (plan or role) */
1447
+ 403: {
1413
1448
  headers: {
1449
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1450
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1451
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1452
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1453
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1454
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1414
1455
  [name: string]: unknown;
1415
1456
  };
1416
1457
  content: {
1417
1458
  "application/json": components["schemas"]["ErrorResponse"];
1418
1459
  };
1419
1460
  };
1420
- /** @description The billing JSON request body exceeds the maximum size */
1421
- 413: {
1461
+ /** @description Reference profile or source roast not found */
1462
+ 404: {
1422
1463
  headers: {
1464
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1465
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1466
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1467
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1468
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1469
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1423
1470
  [name: string]: unknown;
1424
1471
  };
1425
1472
  content: {
1426
1473
  "application/json": components["schemas"]["ErrorResponse"];
1427
1474
  };
1428
1475
  };
1429
- /** @description Billing storage or provider state is unavailable */
1430
- 503: {
1476
+ /** @description Revision, idempotency, or concurrency conflict */
1477
+ 409: {
1431
1478
  headers: {
1479
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1480
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1481
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1482
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1483
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1484
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1432
1485
  [name: string]: unknown;
1433
1486
  };
1434
1487
  content: {
1435
1488
  "application/json": components["schemas"]["ErrorResponse"];
1436
1489
  };
1437
1490
  };
1491
+ 429: components["responses"]["ApiRateLimitExceeded"];
1438
1492
  };
1439
1493
  };
1440
- delete?: never;
1441
1494
  options?: never;
1442
1495
  head?: never;
1443
1496
  patch?: never;
1444
1497
  trace?: never;
1445
1498
  };
1446
- "/v1/billing/checkout-sessions/{admissionId}": {
1499
+ "/v1/profile-comparisons": {
1447
1500
  parameters: {
1448
1501
  query?: never;
1449
1502
  header?: never;
1450
1503
  path?: never;
1451
1504
  cookie?: never;
1452
1505
  };
1453
- /** Read owner-bound Checkout admission state */
1454
- get: {
1506
+ get?: never;
1507
+ put?: never;
1508
+ /** Compare two immutable profile revisions */
1509
+ post: {
1455
1510
  parameters: {
1456
1511
  query?: never;
1457
1512
  header?: never;
1458
- path: {
1459
- admissionId: string;
1460
- };
1513
+ path?: never;
1461
1514
  cookie?: never;
1462
1515
  };
1463
- requestBody?: never;
1516
+ requestBody: {
1517
+ content: {
1518
+ "application/json": components["schemas"]["ProfileComparisonRequest"];
1519
+ };
1520
+ };
1464
1521
  responses: {
1465
- /** @description Checkout admission state */
1522
+ /** @description Deterministic measured deltas */
1466
1523
  200: {
1467
1524
  headers: {
1468
- /** @description Billing responses are never shared-cacheable */
1469
- "Cache-Control"?: string;
1525
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1526
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1527
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1528
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1529
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1530
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1470
1531
  [name: string]: unknown;
1471
1532
  };
1472
1533
  content: {
1473
- "application/json": components["schemas"]["BillingCheckoutSession"];
1534
+ "application/json": components["schemas"]["ProfileComparisonResponse"];
1474
1535
  };
1475
1536
  };
1476
- /** @description A valid Supabase user session is required */
1537
+ /** @description Invalid request */
1538
+ 400: {
1539
+ headers: {
1540
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1541
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1542
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1543
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1544
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1545
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1546
+ [name: string]: unknown;
1547
+ };
1548
+ content: {
1549
+ "application/json": components["schemas"]["ErrorResponse"];
1550
+ };
1551
+ };
1552
+ /** @description Authentication required */
1477
1553
  401: {
1478
1554
  headers: {
1555
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1556
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1557
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1558
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1559
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1560
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1479
1561
  [name: string]: unknown;
1480
1562
  };
1481
1563
  content: {
1482
1564
  "application/json": components["schemas"]["ErrorResponse"];
1483
1565
  };
1484
1566
  };
1485
- /** @description Admission not found */
1486
- 404: {
1567
+ /** @description Insufficient entitlement (plan or role) */
1568
+ 403: {
1487
1569
  headers: {
1570
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1571
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1572
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1573
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1574
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1575
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1488
1576
  [name: string]: unknown;
1489
1577
  };
1490
1578
  content: {
1491
1579
  "application/json": components["schemas"]["ErrorResponse"];
1492
1580
  };
1493
1581
  };
1494
- /** @description The operation conflicts with current durable state */
1495
- 409: {
1582
+ /** @description Reference profile or source roast not found */
1583
+ 404: {
1496
1584
  headers: {
1585
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1586
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1587
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1588
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1589
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1590
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1497
1591
  [name: string]: unknown;
1498
1592
  };
1499
1593
  content: {
1500
1594
  "application/json": components["schemas"]["ErrorResponse"];
1501
1595
  };
1502
1596
  };
1503
- /** @description Billing storage or provider state is unavailable */
1504
- 503: {
1597
+ /** @description Revision, idempotency, or concurrency conflict */
1598
+ 409: {
1505
1599
  headers: {
1600
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
1601
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
1602
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
1603
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
1604
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
1605
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
1506
1606
  [name: string]: unknown;
1507
1607
  };
1508
1608
  content: {
1509
1609
  "application/json": components["schemas"]["ErrorResponse"];
1510
1610
  };
1511
1611
  };
1612
+ 429: components["responses"]["ApiRateLimitExceeded"];
1512
1613
  };
1513
1614
  };
1514
- put?: never;
1515
- post?: never;
1516
1615
  delete?: never;
1517
1616
  options?: never;
1518
1617
  head?: never;
1519
1618
  patch?: never;
1520
1619
  trace?: never;
1521
1620
  };
1522
- "/v1/billing/checkout-sessions/{admissionId}/reconcile": {
1621
+ "/v1/account-deletion": {
1523
1622
  parameters: {
1524
1623
  query?: never;
1525
1624
  header?: never;
@@ -1528,27 +1627,54 @@ interface paths {
1528
1627
  };
1529
1628
  get?: never;
1530
1629
  put?: never;
1531
- /** Authoritatively reconcile a Checkout admission */
1630
+ /**
1631
+ * Accept deletion of the authenticated account
1632
+ * @description Cryptographically validates a recent purpose-bound coffee-app assertion and atomically creates or replays the permanent Parchment-owned deletion operation.
1633
+ */
1532
1634
  post: {
1533
1635
  parameters: {
1534
1636
  query?: never;
1535
1637
  header?: never;
1536
- path: {
1537
- admissionId: string;
1538
- };
1638
+ path?: never;
1539
1639
  cookie?: never;
1540
1640
  };
1541
- requestBody?: never;
1641
+ requestBody: {
1642
+ content: {
1643
+ "application/json": {
1644
+ assertion: string;
1645
+ };
1646
+ };
1647
+ };
1542
1648
  responses: {
1543
- /** @description Reconciled Checkout admission */
1649
+ /** @description Existing accepted deletion operation */
1544
1650
  200: {
1545
1651
  headers: {
1546
- /** @description Billing responses are never shared-cacheable */
1652
+ /** @description Sensitive lifecycle responses are never cached */
1547
1653
  "Cache-Control"?: string;
1548
1654
  [name: string]: unknown;
1549
1655
  };
1550
1656
  content: {
1551
- "application/json": components["schemas"]["BillingCheckoutSession"];
1657
+ "application/json": components["schemas"]["AccountDeletionOperation"];
1658
+ };
1659
+ };
1660
+ /** @description Deletion accepted; the durable worker owns convergence */
1661
+ 202: {
1662
+ headers: {
1663
+ /** @description Sensitive lifecycle responses are never cached */
1664
+ "Cache-Control"?: string;
1665
+ [name: string]: unknown;
1666
+ };
1667
+ content: {
1668
+ "application/json": components["schemas"]["AccountDeletionOperation"];
1669
+ };
1670
+ };
1671
+ /** @description Malformed assertion request */
1672
+ 400: {
1673
+ headers: {
1674
+ [name: string]: unknown;
1675
+ };
1676
+ content: {
1677
+ "application/json": components["schemas"]["ErrorResponse"];
1552
1678
  };
1553
1679
  };
1554
1680
  /** @description A valid Supabase user session is required */
@@ -1560,8 +1686,8 @@ interface paths {
1560
1686
  "application/json": components["schemas"]["ErrorResponse"];
1561
1687
  };
1562
1688
  };
1563
- /** @description Admission not found */
1564
- 404: {
1689
+ /** @description Recent account-deletion reauthentication is invalid */
1690
+ 403: {
1565
1691
  headers: {
1566
1692
  [name: string]: unknown;
1567
1693
  };
@@ -1569,7 +1695,7 @@ interface paths {
1569
1695
  "application/json": components["schemas"]["ErrorResponse"];
1570
1696
  };
1571
1697
  };
1572
- /** @description The operation conflicts with current durable state */
1698
+ /** @description Account deletion is blocked by deterministic local work */
1573
1699
  409: {
1574
1700
  headers: {
1575
1701
  [name: string]: unknown;
@@ -1578,7 +1704,7 @@ interface paths {
1578
1704
  "application/json": components["schemas"]["ErrorResponse"];
1579
1705
  };
1580
1706
  };
1581
- /** @description Billing storage or provider state is unavailable */
1707
+ /** @description The activated lifecycle or storage is unavailable */
1582
1708
  503: {
1583
1709
  headers: {
1584
1710
  [name: string]: unknown;
@@ -1595,7 +1721,7 @@ interface paths {
1595
1721
  patch?: never;
1596
1722
  trace?: never;
1597
1723
  };
1598
- "/v1/billing/stripe/webhook": {
1724
+ "/v1/billing/checkout-sessions": {
1599
1725
  parameters: {
1600
1726
  query?: never;
1601
1727
  header?: never;
@@ -1604,35 +1730,40 @@ interface paths {
1604
1730
  };
1605
1731
  get?: never;
1606
1732
  put?: never;
1607
- /**
1608
- * Receive verified Stripe billing deliveries
1609
- * @description Verifies the Stripe signature against the untouched raw body before parsing and settles through the canonical atomic billing RPC.
1610
- */
1733
+ /** Create or replay an embedded Stripe Checkout Session */
1611
1734
  post: {
1612
1735
  parameters: {
1613
1736
  query?: never;
1614
- header: {
1615
- "stripe-signature": string;
1616
- };
1737
+ header?: never;
1617
1738
  path?: never;
1618
1739
  cookie?: never;
1619
1740
  };
1620
- requestBody?: never;
1741
+ requestBody: {
1742
+ content: {
1743
+ "application/json": {
1744
+ /** Format: uuid */
1745
+ requestId: string;
1746
+ purchaseItems: {
1747
+ purchaseKey: string;
1748
+ /** @default 1 */
1749
+ quantity?: number;
1750
+ }[];
1751
+ };
1752
+ };
1753
+ };
1621
1754
  responses: {
1622
- /** @description Delivery settled or deterministically ignored */
1755
+ /** @description Created or replayed Checkout Session */
1623
1756
  200: {
1624
1757
  headers: {
1758
+ /** @description Billing responses are never shared-cacheable */
1759
+ "Cache-Control"?: string;
1625
1760
  [name: string]: unknown;
1626
1761
  };
1627
1762
  content: {
1628
- "application/json": {
1629
- /** @enum {boolean} */
1630
- received: true;
1631
- outcome: string;
1632
- };
1763
+ "application/json": components["schemas"]["BillingCheckoutSession"];
1633
1764
  };
1634
1765
  };
1635
- /** @description Signature or provider payload is invalid */
1766
+ /** @description Unknown product or definite provider rejection */
1636
1767
  400: {
1637
1768
  headers: {
1638
1769
  [name: string]: unknown;
@@ -1641,7 +1772,25 @@ interface paths {
1641
1772
  "application/json": components["schemas"]["ErrorResponse"];
1642
1773
  };
1643
1774
  };
1644
- /** @description Provider payload exceeds the bounded webhook body limit */
1775
+ /** @description A valid Supabase user session is required */
1776
+ 401: {
1777
+ headers: {
1778
+ [name: string]: unknown;
1779
+ };
1780
+ content: {
1781
+ "application/json": components["schemas"]["ErrorResponse"];
1782
+ };
1783
+ };
1784
+ /** @description The operation conflicts with current durable state */
1785
+ 409: {
1786
+ headers: {
1787
+ [name: string]: unknown;
1788
+ };
1789
+ content: {
1790
+ "application/json": components["schemas"]["ErrorResponse"];
1791
+ };
1792
+ };
1793
+ /** @description The billing JSON request body exceeds the maximum size */
1645
1794
  413: {
1646
1795
  headers: {
1647
1796
  [name: string]: unknown;
@@ -1650,7 +1799,7 @@ interface paths {
1650
1799
  "application/json": components["schemas"]["ErrorResponse"];
1651
1800
  };
1652
1801
  };
1653
- /** @description Retryable provider or storage failure */
1802
+ /** @description Billing storage or provider state is unavailable */
1654
1803
  503: {
1655
1804
  headers: {
1656
1805
  [name: string]: unknown;
@@ -1667,26 +1816,250 @@ interface paths {
1667
1816
  patch?: never;
1668
1817
  trace?: never;
1669
1818
  };
1670
- "/v1/webhooks/resend/market-brief": {
1819
+ "/v1/billing/checkout-sessions/{admissionId}": {
1671
1820
  parameters: {
1672
1821
  query?: never;
1673
1822
  header?: never;
1674
1823
  path?: never;
1675
1824
  cookie?: never;
1676
1825
  };
1677
- get?: never;
1678
- put?: never;
1679
- /**
1680
- * Receive verified Market Brief provider events
1681
- * @description Verifies the Resend Svix signature against the untouched raw body, then idempotently settles provider opt-out or suppression state under Parchment authority.
1682
- */
1683
- post: {
1826
+ /** Read owner-bound Checkout admission state */
1827
+ get: {
1684
1828
  parameters: {
1685
1829
  query?: never;
1686
- header: {
1687
- "svix-id": string;
1688
- "svix-timestamp": string;
1689
- "svix-signature": string;
1830
+ header?: never;
1831
+ path: {
1832
+ admissionId: string;
1833
+ };
1834
+ cookie?: never;
1835
+ };
1836
+ requestBody?: never;
1837
+ responses: {
1838
+ /** @description Checkout admission state */
1839
+ 200: {
1840
+ headers: {
1841
+ /** @description Billing responses are never shared-cacheable */
1842
+ "Cache-Control"?: string;
1843
+ [name: string]: unknown;
1844
+ };
1845
+ content: {
1846
+ "application/json": components["schemas"]["BillingCheckoutSession"];
1847
+ };
1848
+ };
1849
+ /** @description A valid Supabase user session is required */
1850
+ 401: {
1851
+ headers: {
1852
+ [name: string]: unknown;
1853
+ };
1854
+ content: {
1855
+ "application/json": components["schemas"]["ErrorResponse"];
1856
+ };
1857
+ };
1858
+ /** @description Admission not found */
1859
+ 404: {
1860
+ headers: {
1861
+ [name: string]: unknown;
1862
+ };
1863
+ content: {
1864
+ "application/json": components["schemas"]["ErrorResponse"];
1865
+ };
1866
+ };
1867
+ /** @description The operation conflicts with current durable state */
1868
+ 409: {
1869
+ headers: {
1870
+ [name: string]: unknown;
1871
+ };
1872
+ content: {
1873
+ "application/json": components["schemas"]["ErrorResponse"];
1874
+ };
1875
+ };
1876
+ /** @description Billing storage or provider state is unavailable */
1877
+ 503: {
1878
+ headers: {
1879
+ [name: string]: unknown;
1880
+ };
1881
+ content: {
1882
+ "application/json": components["schemas"]["ErrorResponse"];
1883
+ };
1884
+ };
1885
+ };
1886
+ };
1887
+ put?: never;
1888
+ post?: never;
1889
+ delete?: never;
1890
+ options?: never;
1891
+ head?: never;
1892
+ patch?: never;
1893
+ trace?: never;
1894
+ };
1895
+ "/v1/billing/checkout-sessions/{admissionId}/reconcile": {
1896
+ parameters: {
1897
+ query?: never;
1898
+ header?: never;
1899
+ path?: never;
1900
+ cookie?: never;
1901
+ };
1902
+ get?: never;
1903
+ put?: never;
1904
+ /** Authoritatively reconcile a Checkout admission */
1905
+ post: {
1906
+ parameters: {
1907
+ query?: never;
1908
+ header?: never;
1909
+ path: {
1910
+ admissionId: string;
1911
+ };
1912
+ cookie?: never;
1913
+ };
1914
+ requestBody?: never;
1915
+ responses: {
1916
+ /** @description Reconciled Checkout admission */
1917
+ 200: {
1918
+ headers: {
1919
+ /** @description Billing responses are never shared-cacheable */
1920
+ "Cache-Control"?: string;
1921
+ [name: string]: unknown;
1922
+ };
1923
+ content: {
1924
+ "application/json": components["schemas"]["BillingCheckoutSession"];
1925
+ };
1926
+ };
1927
+ /** @description A valid Supabase user session is required */
1928
+ 401: {
1929
+ headers: {
1930
+ [name: string]: unknown;
1931
+ };
1932
+ content: {
1933
+ "application/json": components["schemas"]["ErrorResponse"];
1934
+ };
1935
+ };
1936
+ /** @description Admission not found */
1937
+ 404: {
1938
+ headers: {
1939
+ [name: string]: unknown;
1940
+ };
1941
+ content: {
1942
+ "application/json": components["schemas"]["ErrorResponse"];
1943
+ };
1944
+ };
1945
+ /** @description The operation conflicts with current durable state */
1946
+ 409: {
1947
+ headers: {
1948
+ [name: string]: unknown;
1949
+ };
1950
+ content: {
1951
+ "application/json": components["schemas"]["ErrorResponse"];
1952
+ };
1953
+ };
1954
+ /** @description Billing storage or provider state is unavailable */
1955
+ 503: {
1956
+ headers: {
1957
+ [name: string]: unknown;
1958
+ };
1959
+ content: {
1960
+ "application/json": components["schemas"]["ErrorResponse"];
1961
+ };
1962
+ };
1963
+ };
1964
+ };
1965
+ delete?: never;
1966
+ options?: never;
1967
+ head?: never;
1968
+ patch?: never;
1969
+ trace?: never;
1970
+ };
1971
+ "/v1/billing/stripe/webhook": {
1972
+ parameters: {
1973
+ query?: never;
1974
+ header?: never;
1975
+ path?: never;
1976
+ cookie?: never;
1977
+ };
1978
+ get?: never;
1979
+ put?: never;
1980
+ /**
1981
+ * Receive verified Stripe billing deliveries
1982
+ * @description Verifies the Stripe signature against the untouched raw body before parsing and settles through the canonical atomic billing RPC.
1983
+ */
1984
+ post: {
1985
+ parameters: {
1986
+ query?: never;
1987
+ header: {
1988
+ "stripe-signature": string;
1989
+ };
1990
+ path?: never;
1991
+ cookie?: never;
1992
+ };
1993
+ requestBody?: never;
1994
+ responses: {
1995
+ /** @description Delivery settled or deterministically ignored */
1996
+ 200: {
1997
+ headers: {
1998
+ [name: string]: unknown;
1999
+ };
2000
+ content: {
2001
+ "application/json": {
2002
+ /** @enum {boolean} */
2003
+ received: true;
2004
+ outcome: string;
2005
+ };
2006
+ };
2007
+ };
2008
+ /** @description Signature or provider payload is invalid */
2009
+ 400: {
2010
+ headers: {
2011
+ [name: string]: unknown;
2012
+ };
2013
+ content: {
2014
+ "application/json": components["schemas"]["ErrorResponse"];
2015
+ };
2016
+ };
2017
+ /** @description Provider payload exceeds the bounded webhook body limit */
2018
+ 413: {
2019
+ headers: {
2020
+ [name: string]: unknown;
2021
+ };
2022
+ content: {
2023
+ "application/json": components["schemas"]["ErrorResponse"];
2024
+ };
2025
+ };
2026
+ /** @description Retryable provider or storage failure */
2027
+ 503: {
2028
+ headers: {
2029
+ [name: string]: unknown;
2030
+ };
2031
+ content: {
2032
+ "application/json": components["schemas"]["ErrorResponse"];
2033
+ };
2034
+ };
2035
+ };
2036
+ };
2037
+ delete?: never;
2038
+ options?: never;
2039
+ head?: never;
2040
+ patch?: never;
2041
+ trace?: never;
2042
+ };
2043
+ "/v1/webhooks/resend/market-brief": {
2044
+ parameters: {
2045
+ query?: never;
2046
+ header?: never;
2047
+ path?: never;
2048
+ cookie?: never;
2049
+ };
2050
+ get?: never;
2051
+ put?: never;
2052
+ /**
2053
+ * Receive verified Market Brief provider events
2054
+ * @description Verifies the Resend Svix signature against the untouched raw body, then idempotently settles provider opt-out or suppression state under Parchment authority.
2055
+ */
2056
+ post: {
2057
+ parameters: {
2058
+ query?: never;
2059
+ header: {
2060
+ "svix-id": string;
2061
+ "svix-timestamp": string;
2062
+ "svix-signature": string;
1690
2063
  };
1691
2064
  path?: never;
1692
2065
  cookie?: never;
@@ -12961,6 +13334,8 @@ interface components {
12961
13334
  revision: number;
12962
13335
  /** @enum {string} */
12963
13336
  sourceClass: "artisan_upload" | "executed_roast" | "generated_revision";
13337
+ /** Format: uuid */
13338
+ parentRevisionId: string | null;
12964
13339
  sourceRoast: {
12965
13340
  id: number;
12966
13341
  revision: string;
@@ -13027,23 +13402,79 @@ interface components {
13027
13402
  version: "v1";
13028
13403
  };
13029
13404
  };
13030
- ReferenceProfileImportRequest: {
13031
- title?: string;
13032
- notes?: string;
13033
- fileName: string;
13034
- fileContent: string;
13035
- fileSize?: number;
13036
- };
13037
- ReferenceProfileFromRoastRequest: {
13038
- roastId: number;
13039
- roastRevision: string;
13040
- title?: string;
13041
- notes?: string;
13042
- };
13043
- ProfileComparisonResponse: {
13405
+ ReferenceProfileGenerationPreviewResponse: {
13044
13406
  data: {
13407
+ /** Format: uuid */
13408
+ parentRevisionId: string;
13409
+ title: string;
13410
+ changes: {
13411
+ temperatureAdjustments: {
13412
+ /** @enum {string} */
13413
+ kind: "bean_temperature" | "environmental_temperature";
13414
+ startMilliseconds: number;
13415
+ endMilliseconds: number;
13416
+ delta: number;
13417
+ }[];
13418
+ };
13419
+ chart: components["schemas"]["ReferenceProfileChart"];
13420
+ /** @enum {boolean} */
13421
+ exportEligible: true;
13422
+ };
13423
+ meta: {
13045
13424
  /** @enum {string} */
13046
- alignment: "charge";
13425
+ resource: "reference-profile-previews";
13426
+ /** @enum {string} */
13427
+ namespace: "/v1/reference-profiles";
13428
+ /** @enum {string} */
13429
+ version: "v1";
13430
+ };
13431
+ };
13432
+ ReferenceProfileGenerationRequest: {
13433
+ title: string;
13434
+ notes?: string;
13435
+ changes: {
13436
+ temperatureAdjustments: {
13437
+ /** @enum {string} */
13438
+ kind: "bean_temperature" | "environmental_temperature";
13439
+ startMilliseconds: number;
13440
+ endMilliseconds: number;
13441
+ delta: number;
13442
+ }[];
13443
+ };
13444
+ };
13445
+ ReferenceProfileGenerationExportResponse: {
13446
+ data: {
13447
+ /** @enum {string} */
13448
+ fileName: "Purveyors-reference.alog";
13449
+ fileContent: string;
13450
+ fileSize: number;
13451
+ };
13452
+ meta: {
13453
+ /** @enum {string} */
13454
+ resource: "reference-profile-exports";
13455
+ /** @enum {string} */
13456
+ namespace: "/v1/reference-profiles";
13457
+ /** @enum {string} */
13458
+ version: "v1";
13459
+ };
13460
+ };
13461
+ ReferenceProfileImportRequest: {
13462
+ title?: string;
13463
+ notes?: string;
13464
+ fileName: string;
13465
+ fileContent: string;
13466
+ fileSize?: number;
13467
+ };
13468
+ ReferenceProfileFromRoastRequest: {
13469
+ roastId: number;
13470
+ roastRevision: string;
13471
+ title?: string;
13472
+ notes?: string;
13473
+ };
13474
+ ProfileComparisonResponse: {
13475
+ data: {
13476
+ /** @enum {string} */
13477
+ alignment: "charge";
13047
13478
  /** @enum {string} */
13048
13479
  targetUnit: "F" | "C";
13049
13480
  left: {
@@ -17033,6 +17464,7 @@ type RoastChartEvent = components["schemas"]["RoastChartEvent"];
17033
17464
  type ReferenceProfileImportRequest = NonNullable<paths["/v1/reference-profiles/imports"]["post"]["requestBody"]>["content"]["application/json"];
17034
17465
  type ReferenceProfileFromRoastRequest = NonNullable<paths["/v1/reference-profiles/from-roast"]["post"]["requestBody"]>["content"]["application/json"];
17035
17466
  type ReferenceProfileUpdateRequest = NonNullable<paths["/v1/reference-profiles/{id}"]["patch"]["requestBody"]>["content"]["application/json"];
17467
+ type ReferenceProfileGenerationRequest = NonNullable<paths["/v1/reference-profiles/{id}/revisions/{revisionId}/preview"]["post"]["requestBody"]>["content"]["application/json"];
17036
17468
  type ProfileComparisonRequest = NonNullable<paths["/v1/profile-comparisons"]["post"]["requestBody"]>["content"]["application/json"];
17037
17469
  /** Request body for {@link ParchmentClient.roasts.classify}. */
17038
17470
  type RoastClassificationRequest = NonNullable<paths["/v1/roasts/classify"]["post"]["requestBody"]>["content"]["application/json"];
@@ -25132,7 +25564,307 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25132
25564
  "application/json": components["schemas"]["ErrorResponse"];
25133
25565
  };
25134
25566
  };
25135
- 404: {
25567
+ 404: {
25568
+ headers: {
25569
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25570
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25571
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25572
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25573
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25574
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25575
+ [name: string]: unknown;
25576
+ };
25577
+ content: {
25578
+ "application/json": components["schemas"]["ErrorResponse"];
25579
+ };
25580
+ };
25581
+ 429: components["responses"]["ApiRateLimitExceeded"];
25582
+ };
25583
+ }, {
25584
+ params: {
25585
+ path: {
25586
+ batchId: string;
25587
+ };
25588
+ };
25589
+ }, `${string}/${string}`>>;
25590
+ /**
25591
+ * Durably reserve a complete manual-batch request. Once accepted, clients
25592
+ * only need to persist the batch UUID.
25593
+ */
25594
+ reserveManualBatch: (body: ManualInventoryBatchReserveRequest) => Promise<openapi_fetch.FetchResponse<{
25595
+ parameters: {
25596
+ query?: never;
25597
+ header?: never;
25598
+ path?: never;
25599
+ cookie?: never;
25600
+ };
25601
+ requestBody?: {
25602
+ content: {
25603
+ "application/json": components["schemas"]["ManualInventoryBatchReserveRequest"];
25604
+ };
25605
+ };
25606
+ responses: {
25607
+ 201: {
25608
+ headers: {
25609
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25610
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25611
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25612
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25613
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25614
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25615
+ [name: string]: unknown;
25616
+ };
25617
+ content: {
25618
+ "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
25619
+ };
25620
+ };
25621
+ 400: {
25622
+ headers: {
25623
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25624
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25625
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25626
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25627
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25628
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25629
+ [name: string]: unknown;
25630
+ };
25631
+ content: {
25632
+ "application/json": components["schemas"]["ErrorResponse"];
25633
+ };
25634
+ };
25635
+ 401: {
25636
+ headers: {
25637
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25638
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25639
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25640
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25641
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25642
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25643
+ [name: string]: unknown;
25644
+ };
25645
+ content: {
25646
+ "application/json": components["schemas"]["ErrorResponse"];
25647
+ };
25648
+ };
25649
+ 403: {
25650
+ headers: {
25651
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25652
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25653
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25654
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25655
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25656
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25657
+ [name: string]: unknown;
25658
+ };
25659
+ content: {
25660
+ "application/json": components["schemas"]["ErrorResponse"];
25661
+ };
25662
+ };
25663
+ 409: {
25664
+ headers: {
25665
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25666
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25667
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25668
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25669
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25670
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25671
+ [name: string]: unknown;
25672
+ };
25673
+ content: {
25674
+ "application/json": components["schemas"]["ErrorResponse"];
25675
+ };
25676
+ };
25677
+ 429: {
25678
+ headers: {
25679
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25680
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25681
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25682
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25683
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25684
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25685
+ "Retry-After": components["headers"]["Retry-After"];
25686
+ "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
25687
+ [name: string]: unknown;
25688
+ };
25689
+ content: {
25690
+ "application/json": components["schemas"]["ErrorResponse"];
25691
+ };
25692
+ };
25693
+ 503: {
25694
+ headers: {
25695
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25696
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25697
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25698
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25699
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25700
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25701
+ [name: string]: unknown;
25702
+ };
25703
+ content: {
25704
+ "application/json": components["schemas"]["ErrorResponse"];
25705
+ };
25706
+ };
25707
+ };
25708
+ }, {
25709
+ body: {
25710
+ batchId: string;
25711
+ purchaseDate?: string;
25712
+ taxShipTotal?: number;
25713
+ notes?: string;
25714
+ items: components["schemas"]["ManualInventoryBatchItem"][];
25715
+ };
25716
+ }, `${string}/${string}`>>;
25717
+ /** Commit a reserved batch by UUID with no request body. */
25718
+ commitManualBatch: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
25719
+ parameters: {
25720
+ query?: never;
25721
+ header?: never;
25722
+ path: {
25723
+ batchId: string;
25724
+ };
25725
+ cookie?: never;
25726
+ };
25727
+ requestBody?: never;
25728
+ responses: {
25729
+ 200: {
25730
+ headers: {
25731
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25732
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25733
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25734
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25735
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25736
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25737
+ [name: string]: unknown;
25738
+ };
25739
+ content: {
25740
+ "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
25741
+ };
25742
+ };
25743
+ 401: {
25744
+ headers: {
25745
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25746
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25747
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25748
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25749
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25750
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25751
+ [name: string]: unknown;
25752
+ };
25753
+ content: {
25754
+ "application/json": components["schemas"]["ErrorResponse"];
25755
+ };
25756
+ };
25757
+ 403: {
25758
+ headers: {
25759
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25760
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25761
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25762
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25763
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25764
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25765
+ [name: string]: unknown;
25766
+ };
25767
+ content: {
25768
+ "application/json": components["schemas"]["ErrorResponse"];
25769
+ };
25770
+ };
25771
+ 404: {
25772
+ headers: {
25773
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25774
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25775
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25776
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25777
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25778
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25779
+ [name: string]: unknown;
25780
+ };
25781
+ content: {
25782
+ "application/json": components["schemas"]["ErrorResponse"];
25783
+ };
25784
+ };
25785
+ 429: {
25786
+ headers: {
25787
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25788
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25789
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25790
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25791
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25792
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25793
+ "Retry-After": components["headers"]["Retry-After"];
25794
+ "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
25795
+ [name: string]: unknown;
25796
+ };
25797
+ content: {
25798
+ "application/json": components["schemas"]["ErrorResponse"];
25799
+ };
25800
+ };
25801
+ 503: {
25802
+ headers: {
25803
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25804
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25805
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25806
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25807
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25808
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25809
+ [name: string]: unknown;
25810
+ };
25811
+ content: {
25812
+ "application/json": components["schemas"]["ErrorResponse"];
25813
+ };
25814
+ };
25815
+ };
25816
+ }, {
25817
+ params: {
25818
+ path: {
25819
+ batchId: string;
25820
+ };
25821
+ };
25822
+ }, `${string}/${string}`>>;
25823
+ /**
25824
+ * Get unknown, accepted, in-progress, completed, or terminal-rejected
25825
+ * state. Unknown is explicitly nonterminal, including missing or
25826
+ * cross-tenant UUIDs, so clients retain the UUID and retry.
25827
+ */
25828
+ getManualBatchStatus: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
25829
+ parameters: {
25830
+ query?: never;
25831
+ header?: never;
25832
+ path: {
25833
+ batchId: string;
25834
+ };
25835
+ cookie?: never;
25836
+ };
25837
+ requestBody?: never;
25838
+ responses: {
25839
+ 200: {
25840
+ headers: {
25841
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25842
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25843
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25844
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25845
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25846
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25847
+ [name: string]: unknown;
25848
+ };
25849
+ content: {
25850
+ "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
25851
+ };
25852
+ };
25853
+ 401: {
25854
+ headers: {
25855
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25856
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25857
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25858
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25859
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25860
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25861
+ [name: string]: unknown;
25862
+ };
25863
+ content: {
25864
+ "application/json": components["schemas"]["ErrorResponse"];
25865
+ };
25866
+ };
25867
+ 403: {
25136
25868
  headers: {
25137
25869
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25138
25870
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25155,11 +25887,8 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25155
25887
  };
25156
25888
  };
25157
25889
  }, `${string}/${string}`>>;
25158
- /**
25159
- * Durably reserve a complete manual-batch request. Once accepted, clients
25160
- * only need to persist the batch UUID.
25161
- */
25162
- reserveManualBatch: (body: ManualInventoryBatchReserveRequest) => Promise<openapi_fetch.FetchResponse<{
25890
+ /** Durably reserve canonical catalog-backed inventory intent. */
25891
+ reserveCatalogBatch: (body: CatalogInventoryBatchReserveRequest) => Promise<openapi_fetch.FetchResponse<{
25163
25892
  parameters: {
25164
25893
  query?: never;
25165
25894
  header?: never;
@@ -25168,7 +25897,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25168
25897
  };
25169
25898
  requestBody?: {
25170
25899
  content: {
25171
- "application/json": components["schemas"]["ManualInventoryBatchReserveRequest"];
25900
+ "application/json": components["schemas"]["CatalogInventoryBatchReserveRequest"];
25172
25901
  };
25173
25902
  };
25174
25903
  responses: {
@@ -25183,7 +25912,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25183
25912
  [name: string]: unknown;
25184
25913
  };
25185
25914
  content: {
25186
- "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
25915
+ "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
25187
25916
  };
25188
25917
  };
25189
25918
  400: {
@@ -25279,11 +26008,11 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25279
26008
  purchaseDate?: string;
25280
26009
  taxShipTotal?: number;
25281
26010
  notes?: string;
25282
- items: components["schemas"]["ManualInventoryBatchItem"][];
26011
+ items: components["schemas"]["CatalogInventoryBatchItem"][];
25283
26012
  };
25284
26013
  }, `${string}/${string}`>>;
25285
- /** Commit a reserved batch by UUID with no request body. */
25286
- commitManualBatch: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
26014
+ /** Atomically commit a reserved catalog batch by UUID, with no body. */
26015
+ commitCatalogBatch: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
25287
26016
  parameters: {
25288
26017
  query?: never;
25289
26018
  header?: never;
@@ -25305,7 +26034,21 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25305
26034
  [name: string]: unknown;
25306
26035
  };
25307
26036
  content: {
25308
- "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
26037
+ "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
26038
+ };
26039
+ };
26040
+ 400: {
26041
+ headers: {
26042
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26043
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26044
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26045
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26046
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26047
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26048
+ [name: string]: unknown;
26049
+ };
26050
+ content: {
26051
+ "application/json": components["schemas"]["ErrorResponse"];
25309
26052
  };
25310
26053
  };
25311
26054
  401: {
@@ -25388,12 +26131,8 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25388
26131
  };
25389
26132
  };
25390
26133
  }, `${string}/${string}`>>;
25391
- /**
25392
- * Get unknown, accepted, in-progress, completed, or terminal-rejected
25393
- * state. Unknown is explicitly nonterminal, including missing or
25394
- * cross-tenant UUIDs, so clients retain the UUID and retry.
25395
- */
25396
- getManualBatchStatus: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
26134
+ /** Recover the owner-scoped lifecycle; missing batches remain unknown. */
26135
+ getCatalogBatchStatus: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
25397
26136
  parameters: {
25398
26137
  query?: never;
25399
26138
  header?: never;
@@ -25415,7 +26154,21 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25415
26154
  [name: string]: unknown;
25416
26155
  };
25417
26156
  content: {
25418
- "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
26157
+ "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
26158
+ };
26159
+ };
26160
+ 400: {
26161
+ headers: {
26162
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26163
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26164
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26165
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26166
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26167
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26168
+ [name: string]: unknown;
26169
+ };
26170
+ content: {
26171
+ "application/json": components["schemas"]["ErrorResponse"];
25419
26172
  };
25420
26173
  };
25421
26174
  401: {
@@ -25447,6 +26200,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25447
26200
  };
25448
26201
  };
25449
26202
  429: components["responses"]["ApiRateLimitExceeded"];
26203
+ 503: {
26204
+ headers: {
26205
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26206
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26207
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26208
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26209
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26210
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26211
+ [name: string]: unknown;
26212
+ };
26213
+ content: {
26214
+ "application/json": components["schemas"]["ErrorResponse"];
26215
+ };
26216
+ };
25450
26217
  };
25451
26218
  }, {
25452
26219
  params: {
@@ -25455,21 +26222,30 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25455
26222
  };
25456
26223
  };
25457
26224
  }, `${string}/${string}`>>;
25458
- /** Durably reserve canonical catalog-backed inventory intent. */
25459
- reserveCatalogBatch: (body: CatalogInventoryBatchReserveRequest) => Promise<openapi_fetch.FetchResponse<{
26225
+ /**
26226
+ * Update one of the caller's own inventory rows. Pass `ifMatch` (the
26227
+ * row's `last_updated`) to enable optimistic concurrency (409 on mismatch).
26228
+ */
26229
+ update: (id: number, body: InventoryUpdateRequest, options?: {
26230
+ ifMatch?: string;
26231
+ }) => Promise<openapi_fetch.FetchResponse<{
25460
26232
  parameters: {
25461
26233
  query?: never;
25462
- header?: never;
25463
- path?: never;
26234
+ header?: {
26235
+ "if-match"?: string;
26236
+ };
26237
+ path: {
26238
+ id: number;
26239
+ };
25464
26240
  cookie?: never;
25465
26241
  };
25466
26242
  requestBody?: {
25467
26243
  content: {
25468
- "application/json": components["schemas"]["CatalogInventoryBatchReserveRequest"];
26244
+ "application/json": components["schemas"]["InventoryUpdateRequest"];
25469
26245
  };
25470
26246
  };
25471
26247
  responses: {
25472
- 201: {
26248
+ 200: {
25473
26249
  headers: {
25474
26250
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25475
26251
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25480,7 +26256,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25480
26256
  [name: string]: unknown;
25481
26257
  };
25482
26258
  content: {
25483
- "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
26259
+ "application/json": components["schemas"]["InventoryItemResponse"];
25484
26260
  };
25485
26261
  };
25486
26262
  400: {
@@ -25525,6 +26301,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25525
26301
  "application/json": components["schemas"]["ErrorResponse"];
25526
26302
  };
25527
26303
  };
26304
+ 404: {
26305
+ headers: {
26306
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26307
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26308
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26309
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26310
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26311
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26312
+ [name: string]: unknown;
26313
+ };
26314
+ content: {
26315
+ "application/json": components["schemas"]["ErrorResponse"];
26316
+ };
26317
+ };
25528
26318
  409: {
25529
26319
  headers: {
25530
26320
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -25571,21 +26361,37 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25571
26361
  };
25572
26362
  };
25573
26363
  }, {
26364
+ params: {
26365
+ path: {
26366
+ id: number;
26367
+ };
26368
+ header: {
26369
+ "if-match": string;
26370
+ } | undefined;
26371
+ };
25574
26372
  body: {
25575
- batchId: string;
26373
+ qty?: number;
25576
26374
  purchaseDate?: string;
25577
- taxShipTotal?: number;
25578
- notes?: string;
25579
- items: components["schemas"]["CatalogInventoryBatchItem"][];
26375
+ cost?: number | null;
26376
+ taxShip?: number | null;
26377
+ notes?: string | null;
26378
+ stocked?: boolean;
26379
+ rank?: number | null;
26380
+ cuppingNotes?: string | number | boolean | unknown[] | {
26381
+ [key: string]: unknown;
26382
+ } | null;
25580
26383
  };
25581
26384
  }, `${string}/${string}`>>;
25582
- /** Atomically commit a reserved catalog batch by UUID, with no body. */
25583
- commitCatalogBatch: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
26385
+ /**
26386
+ * Delete one of the caller's own inventory rows. Returns 409 if dependent
26387
+ * roast profiles or sales exist (no force-cascade).
26388
+ */
26389
+ delete: (id: number) => Promise<openapi_fetch.FetchResponse<{
25584
26390
  parameters: {
25585
26391
  query?: never;
25586
26392
  header?: never;
25587
26393
  path: {
25588
- batchId: string;
26394
+ id: number;
25589
26395
  };
25590
26396
  cookie?: never;
25591
26397
  };
@@ -25602,7 +26408,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25602
26408
  [name: string]: unknown;
25603
26409
  };
25604
26410
  content: {
25605
- "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
26411
+ "application/json": components["schemas"]["InventoryDeleteResponse"];
25606
26412
  };
25607
26413
  };
25608
26414
  400: {
@@ -25661,6 +26467,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25661
26467
  "application/json": components["schemas"]["ErrorResponse"];
25662
26468
  };
25663
26469
  };
26470
+ 409: {
26471
+ headers: {
26472
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26473
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26474
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26475
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26476
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26477
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26478
+ [name: string]: unknown;
26479
+ };
26480
+ content: {
26481
+ "application/json": components["schemas"]["ErrorResponse"];
26482
+ };
26483
+ };
25664
26484
  429: {
25665
26485
  headers: {
25666
26486
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -25695,21 +26515,25 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25695
26515
  }, {
25696
26516
  params: {
25697
26517
  path: {
25698
- batchId: string;
26518
+ id: number;
25699
26519
  };
25700
26520
  };
25701
26521
  }, `${string}/${string}`>>;
25702
- /** Recover the owner-scoped lifecycle; missing batches remain unknown. */
25703
- getCatalogBatchStatus: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
26522
+ };
26523
+ roasts: {
26524
+ /** Match Artisan roast metadata to one of the supplied inventory rows. */
26525
+ classify: (body: RoastClassificationRequest) => Promise<openapi_fetch.FetchResponse<{
25704
26526
  parameters: {
25705
26527
  query?: never;
25706
26528
  header?: never;
25707
- path: {
25708
- batchId: string;
25709
- };
26529
+ path?: never;
25710
26530
  cookie?: never;
25711
26531
  };
25712
- requestBody?: never;
26532
+ requestBody: {
26533
+ content: {
26534
+ "application/json": components["schemas"]["RoastClassificationRequest"];
26535
+ };
26536
+ };
25713
26537
  responses: {
25714
26538
  200: {
25715
26539
  headers: {
@@ -25722,7 +26546,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25722
26546
  [name: string]: unknown;
25723
26547
  };
25724
26548
  content: {
25725
- "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
26549
+ "application/json": components["schemas"]["RoastClassificationResponse"];
25726
26550
  };
25727
26551
  };
25728
26552
  400: {
@@ -25767,7 +26591,22 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25767
26591
  "application/json": components["schemas"]["ErrorResponse"];
25768
26592
  };
25769
26593
  };
25770
- 429: components["responses"]["ApiRateLimitExceeded"];
26594
+ 429: {
26595
+ headers: {
26596
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26597
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26598
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26599
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26600
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26601
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26602
+ "Retry-After": components["headers"]["Retry-After"];
26603
+ "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
26604
+ [name: string]: unknown;
26605
+ };
26606
+ content: {
26607
+ "application/json": components["schemas"]["ErrorResponse"];
26608
+ };
26609
+ };
25771
26610
  503: {
25772
26611
  headers: {
25773
26612
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -25784,34 +26623,54 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25784
26623
  };
25785
26624
  };
25786
26625
  }, {
25787
- params: {
25788
- path: {
25789
- batchId: string;
25790
- };
25791
- };
25792
- }, `${string}/${string}`>>;
25793
- /**
25794
- * Update one of the caller's own inventory rows. Pass `ifMatch` (the
25795
- * row's `last_updated`) to enable optimistic concurrency (409 on mismatch).
25796
- */
25797
- update: (id: number, body: InventoryUpdateRequest, options?: {
25798
- ifMatch?: string;
25799
- }) => Promise<openapi_fetch.FetchResponse<{
25800
- parameters: {
25801
- query?: never;
25802
- header?: {
25803
- "if-match"?: string;
26626
+ body: {
26627
+ alogMetadata: {
26628
+ title: string;
26629
+ filename?: string;
26630
+ roastertype?: string;
26631
+ beans?: string;
26632
+ roastingnotes?: string;
26633
+ weight?: [number, number, string];
25804
26634
  };
25805
- path: {
26635
+ inventory: {
25806
26636
  id: number;
26637
+ coffee_name: string;
26638
+ origin?: string;
26639
+ processing?: string;
26640
+ }[];
26641
+ } | {
26642
+ artisanSource: {
26643
+ fileName: string;
26644
+ fileContent: string;
25807
26645
  };
25808
- cookie?: never;
26646
+ inventory: {
26647
+ id: number;
26648
+ coffee_name: string;
26649
+ origin?: string;
26650
+ processing?: string;
26651
+ }[];
25809
26652
  };
25810
- requestBody?: {
25811
- content: {
25812
- "application/json": components["schemas"]["InventoryUpdateRequest"];
26653
+ }, `${string}/${string}`>>;
26654
+ /** List the caller's own roast profiles (owner-scoped). */
26655
+ list: (query?: RoastListQuery) => Promise<openapi_fetch.FetchResponse<{
26656
+ parameters: {
26657
+ query?: {
26658
+ coffee_id?: number;
26659
+ roast_id?: number;
26660
+ batch_name?: string;
26661
+ coffee_name?: string;
26662
+ date_start?: string;
26663
+ date_end?: string;
26664
+ stocked_only?: boolean | null;
26665
+ catalog_id?: number;
26666
+ limit?: number;
26667
+ offset?: number | null;
25813
26668
  };
26669
+ header?: never;
26670
+ path?: never;
26671
+ cookie?: never;
25814
26672
  };
26673
+ requestBody?: never;
25815
26674
  responses: {
25816
26675
  200: {
25817
26676
  headers: {
@@ -25824,7 +26683,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25824
26683
  [name: string]: unknown;
25825
26684
  };
25826
26685
  content: {
25827
- "application/json": components["schemas"]["InventoryItemResponse"];
26686
+ "application/json": components["schemas"]["RoastListResponse"];
25828
26687
  };
25829
26688
  };
25830
26689
  400: {
@@ -25869,7 +26728,57 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25869
26728
  "application/json": components["schemas"]["ErrorResponse"];
25870
26729
  };
25871
26730
  };
25872
- 404: {
26731
+ 429: components["responses"]["ApiRateLimitExceeded"];
26732
+ };
26733
+ }, {
26734
+ params: {
26735
+ query: {
26736
+ coffee_id?: number;
26737
+ roast_id?: number;
26738
+ batch_name?: string;
26739
+ coffee_name?: string;
26740
+ date_start?: string;
26741
+ date_end?: string;
26742
+ stocked_only?: boolean | null;
26743
+ catalog_id?: number;
26744
+ limit?: number;
26745
+ offset?: number | null;
26746
+ } | undefined;
26747
+ };
26748
+ }, `${string}/${string}`>>;
26749
+ /**
26750
+ * Fetch one of the caller's roast profiles by id, optionally with its
26751
+ * temperature curve (`includeTemps`) and event markers (`includeEvents`).
26752
+ */
26753
+ get: (id: string, query?: RoastGetQuery) => Promise<openapi_fetch.FetchResponse<{
26754
+ parameters: {
26755
+ query?: {
26756
+ includeTemps?: boolean | null;
26757
+ includeEvents?: boolean | null;
26758
+ };
26759
+ header?: never;
26760
+ path: {
26761
+ id: string;
26762
+ };
26763
+ cookie?: never;
26764
+ };
26765
+ requestBody?: never;
26766
+ responses: {
26767
+ 200: {
26768
+ headers: {
26769
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26770
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26771
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26772
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26773
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26774
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26775
+ [name: string]: unknown;
26776
+ };
26777
+ content: {
26778
+ "application/json": components["schemas"]["RoastGetResponse"];
26779
+ };
26780
+ };
26781
+ 400: {
25873
26782
  headers: {
25874
26783
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25875
26784
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25883,7 +26792,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25883
26792
  "application/json": components["schemas"]["ErrorResponse"];
25884
26793
  };
25885
26794
  };
25886
- 409: {
26795
+ 401: {
25887
26796
  headers: {
25888
26797
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25889
26798
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25897,7 +26806,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25897
26806
  "application/json": components["schemas"]["ErrorResponse"];
25898
26807
  };
25899
26808
  };
25900
- 429: {
26809
+ 403: {
25901
26810
  headers: {
25902
26811
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25903
26812
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25905,15 +26814,13 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25905
26814
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25906
26815
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25907
26816
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25908
- "Retry-After": components["headers"]["Retry-After"];
25909
- "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
25910
26817
  [name: string]: unknown;
25911
26818
  };
25912
26819
  content: {
25913
26820
  "application/json": components["schemas"]["ErrorResponse"];
25914
26821
  };
25915
26822
  };
25916
- 503: {
26823
+ 404: {
25917
26824
  headers: {
25918
26825
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25919
26826
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25927,39 +26834,28 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25927
26834
  "application/json": components["schemas"]["ErrorResponse"];
25928
26835
  };
25929
26836
  };
26837
+ 429: components["responses"]["ApiRateLimitExceeded"];
25930
26838
  };
25931
26839
  }, {
25932
26840
  params: {
25933
26841
  path: {
25934
- id: number;
26842
+ id: string;
25935
26843
  };
25936
- header: {
25937
- "if-match": string;
26844
+ query: {
26845
+ includeTemps?: boolean | null;
26846
+ includeEvents?: boolean | null;
25938
26847
  } | undefined;
25939
26848
  };
25940
- body: {
25941
- qty?: number;
25942
- purchaseDate?: string;
25943
- cost?: number | null;
25944
- taxShip?: number | null;
25945
- notes?: string | null;
25946
- stocked?: boolean;
25947
- rank?: number | null;
25948
- cuppingNotes?: string | number | boolean | unknown[] | {
25949
- [key: string]: unknown;
25950
- } | null;
25951
- };
25952
26849
  }, `${string}/${string}`>>;
25953
- /**
25954
- * Delete one of the caller's own inventory rows. Returns 409 if dependent
25955
- * roast profiles or sales exist (no force-cascade).
25956
- */
25957
- delete: (id: number) => Promise<openapi_fetch.FetchResponse<{
26850
+ /** Fetch an owner roast's adaptively sampled chart curve and metadata. */
26851
+ chartData: (id: string, query?: RoastChartDataQuery) => Promise<openapi_fetch.FetchResponse<{
25958
26852
  parameters: {
25959
- query?: never;
26853
+ query?: {
26854
+ target_points?: number;
26855
+ };
25960
26856
  header?: never;
25961
26857
  path: {
25962
- id: number;
26858
+ id: string;
25963
26859
  };
25964
26860
  cookie?: never;
25965
26861
  };
@@ -25976,7 +26872,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25976
26872
  [name: string]: unknown;
25977
26873
  };
25978
26874
  content: {
25979
- "application/json": components["schemas"]["InventoryDeleteResponse"];
26875
+ "application/json": components["schemas"]["RoastChartDataResponse"];
25980
26876
  };
25981
26877
  };
25982
26878
  400: {
@@ -26035,75 +26931,42 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26035
26931
  "application/json": components["schemas"]["ErrorResponse"];
26036
26932
  };
26037
26933
  };
26038
- 409: {
26039
- headers: {
26040
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26041
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26042
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26043
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26044
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26045
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26046
- [name: string]: unknown;
26047
- };
26048
- content: {
26049
- "application/json": components["schemas"]["ErrorResponse"];
26050
- };
26051
- };
26052
- 429: {
26053
- headers: {
26054
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26055
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26056
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26057
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26058
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26059
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26060
- "Retry-After": components["headers"]["Retry-After"];
26061
- "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
26062
- [name: string]: unknown;
26063
- };
26064
- content: {
26065
- "application/json": components["schemas"]["ErrorResponse"];
26066
- };
26067
- };
26068
- 503: {
26069
- headers: {
26070
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26071
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26072
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26073
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26074
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26075
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26076
- [name: string]: unknown;
26077
- };
26078
- content: {
26079
- "application/json": components["schemas"]["ErrorResponse"];
26080
- };
26081
- };
26934
+ 429: components["responses"]["ApiRateLimitExceeded"];
26082
26935
  };
26083
26936
  }, {
26084
26937
  params: {
26085
26938
  path: {
26086
- id: number;
26939
+ id: string;
26087
26940
  };
26941
+ query: {
26942
+ target_points?: number;
26943
+ } | undefined;
26088
26944
  };
26089
26945
  }, `${string}/${string}`>>;
26090
- };
26091
- roasts: {
26092
- /** Match Artisan roast metadata to one of the supplied inventory rows. */
26093
- classify: (body: RoastClassificationRequest) => Promise<openapi_fetch.FetchResponse<{
26946
+ /**
26947
+ * Create an owner roast profile, optionally with nested temperature/event
26948
+ * rows. Requires a session or an owner-bound API key carrying the exact
26949
+ * `roast:write` scope. The optional `idempotencyKey` is payload-bound:
26950
+ * same-key, same-payload retries replay, while changed payloads conflict.
26951
+ */
26952
+ create: (body: RoastCreateRequest, options?: {
26953
+ idempotencyKey?: string;
26954
+ }) => Promise<openapi_fetch.FetchResponse<{
26094
26955
  parameters: {
26095
26956
  query?: never;
26096
- header?: never;
26957
+ header?: {
26958
+ "idempotency-key"?: string;
26959
+ };
26097
26960
  path?: never;
26098
26961
  cookie?: never;
26099
26962
  };
26100
26963
  requestBody: {
26101
26964
  content: {
26102
- "application/json": components["schemas"]["RoastClassificationRequest"];
26965
+ "application/json": components["schemas"]["RoastCreateRequest"];
26103
26966
  };
26104
26967
  };
26105
26968
  responses: {
26106
- 200: {
26969
+ 201: {
26107
26970
  headers: {
26108
26971
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26109
26972
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26114,7 +26977,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26114
26977
  [name: string]: unknown;
26115
26978
  };
26116
26979
  content: {
26117
- "application/json": components["schemas"]["RoastClassificationResponse"];
26980
+ "application/json": components["schemas"]["RoastDetailResponse"];
26118
26981
  };
26119
26982
  };
26120
26983
  400: {
@@ -26159,23 +27022,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26159
27022
  "application/json": components["schemas"]["ErrorResponse"];
26160
27023
  };
26161
27024
  };
26162
- 429: {
26163
- headers: {
26164
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26165
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26166
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26167
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26168
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26169
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26170
- "Retry-After": components["headers"]["Retry-After"];
26171
- "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
26172
- [name: string]: unknown;
26173
- };
26174
- content: {
26175
- "application/json": components["schemas"]["ErrorResponse"];
26176
- };
26177
- };
26178
- 503: {
27025
+ 404: {
26179
27026
  headers: {
26180
27027
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26181
27028
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26189,72 +27036,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26189
27036
  "application/json": components["schemas"]["ErrorResponse"];
26190
27037
  };
26191
27038
  };
26192
- };
26193
- }, {
26194
- body: {
26195
- alogMetadata: {
26196
- title: string;
26197
- filename?: string;
26198
- roastertype?: string;
26199
- beans?: string;
26200
- roastingnotes?: string;
26201
- weight?: [number, number, string];
26202
- };
26203
- inventory: {
26204
- id: number;
26205
- coffee_name: string;
26206
- origin?: string;
26207
- processing?: string;
26208
- }[];
26209
- } | {
26210
- artisanSource: {
26211
- fileName: string;
26212
- fileContent: string;
26213
- };
26214
- inventory: {
26215
- id: number;
26216
- coffee_name: string;
26217
- origin?: string;
26218
- processing?: string;
26219
- }[];
26220
- };
26221
- }, `${string}/${string}`>>;
26222
- /** List the caller's own roast profiles (owner-scoped). */
26223
- list: (query?: RoastListQuery) => Promise<openapi_fetch.FetchResponse<{
26224
- parameters: {
26225
- query?: {
26226
- coffee_id?: number;
26227
- roast_id?: number;
26228
- batch_name?: string;
26229
- coffee_name?: string;
26230
- date_start?: string;
26231
- date_end?: string;
26232
- stocked_only?: boolean | null;
26233
- catalog_id?: number;
26234
- limit?: number;
26235
- offset?: number | null;
26236
- };
26237
- header?: never;
26238
- path?: never;
26239
- cookie?: never;
26240
- };
26241
- requestBody?: never;
26242
- responses: {
26243
- 200: {
26244
- headers: {
26245
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26246
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26247
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26248
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26249
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26250
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26251
- [name: string]: unknown;
26252
- };
26253
- content: {
26254
- "application/json": components["schemas"]["RoastListResponse"];
26255
- };
26256
- };
26257
- 400: {
27039
+ 409: {
26258
27040
  headers: {
26259
27041
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26260
27042
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26268,7 +27050,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26268
27050
  "application/json": components["schemas"]["ErrorResponse"];
26269
27051
  };
26270
27052
  };
26271
- 401: {
27053
+ 429: {
26272
27054
  headers: {
26273
27055
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26274
27056
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26276,13 +27058,15 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26276
27058
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26277
27059
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26278
27060
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27061
+ "Retry-After": components["headers"]["Retry-After"];
27062
+ "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
26279
27063
  [name: string]: unknown;
26280
27064
  };
26281
27065
  content: {
26282
27066
  "application/json": components["schemas"]["ErrorResponse"];
26283
27067
  };
26284
27068
  };
26285
- 403: {
27069
+ 503: {
26286
27070
  headers: {
26287
27071
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26288
27072
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26296,43 +27080,72 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26296
27080
  "application/json": components["schemas"]["ErrorResponse"];
26297
27081
  };
26298
27082
  };
26299
- 429: components["responses"]["ApiRateLimitExceeded"];
26300
27083
  };
26301
27084
  }, {
26302
- params: {
26303
- query: {
26304
- coffee_id?: number;
26305
- roast_id?: number;
26306
- batch_name?: string;
26307
- coffee_name?: string;
26308
- date_start?: string;
26309
- date_end?: string;
26310
- stocked_only?: boolean | null;
26311
- catalog_id?: number;
26312
- limit?: number;
26313
- offset?: number | null;
26314
- } | undefined;
27085
+ body: {
27086
+ coffeeId: number;
27087
+ coffeeName?: string;
27088
+ batchName?: string;
27089
+ roastDate?: string;
27090
+ ozIn?: number;
27091
+ ozOut?: number;
27092
+ weightLossPercent?: number;
27093
+ notes?: string;
27094
+ targets?: string;
27095
+ roasterType?: string;
27096
+ roasterSize?: string;
27097
+ temperatureUnit?: "F" | "C";
27098
+ totalRoastTime?: number;
27099
+ developmentPercent?: number;
27100
+ dataSource?: string;
27101
+ roastUuid?: string;
27102
+ fcStartTime?: number;
27103
+ fcStartTemp?: number;
27104
+ fcEndTime?: number;
27105
+ fcEndTemp?: number;
27106
+ dropTime?: number;
27107
+ dropTemp?: number;
27108
+ chargeTemp?: number;
27109
+ chargeTime?: number;
27110
+ tpTime?: number;
27111
+ tpTemp?: number;
27112
+ totalRor?: number;
27113
+ dryPercent?: number;
27114
+ maillardPercent?: number;
27115
+ auc?: number;
27116
+ dryPhaseRor?: number;
27117
+ midPhaseRor?: number;
27118
+ finishPhaseRor?: number;
27119
+ dryPhaseDeltaTemp?: number;
27120
+ temperatures?: components["schemas"]["RoastTemperatureInput"][];
27121
+ events?: components["schemas"]["RoastEventInput"][];
26315
27122
  };
27123
+ params: {
27124
+ header: {
27125
+ "idempotency-key": string;
27126
+ };
27127
+ } | undefined;
26316
27128
  }, `${string}/${string}`>>;
26317
27129
  /**
26318
- * Fetch one of the caller's roast profiles by id, optionally with its
26319
- * temperature curve (`includeTemps`) and event markers (`includeEvents`).
27130
+ * Create every profile in one named batch atomically. The required
27131
+ * payload-bound idempotency key makes transport retries safe.
26320
27132
  */
26321
- get: (id: string, query?: RoastGetQuery) => Promise<openapi_fetch.FetchResponse<{
27133
+ createBatch: (body: RoastBatchCreateRequest, idempotencyKey: string) => Promise<openapi_fetch.FetchResponse<{
26322
27134
  parameters: {
26323
- query?: {
26324
- includeTemps?: boolean | null;
26325
- includeEvents?: boolean | null;
26326
- };
26327
- header?: never;
26328
- path: {
26329
- id: string;
27135
+ query?: never;
27136
+ header: {
27137
+ "idempotency-key": string;
26330
27138
  };
27139
+ path?: never;
26331
27140
  cookie?: never;
26332
27141
  };
26333
- requestBody?: never;
27142
+ requestBody: {
27143
+ content: {
27144
+ "application/json": components["schemas"]["RoastBatchCreateRequest"];
27145
+ };
27146
+ };
26334
27147
  responses: {
26335
- 200: {
27148
+ 201: {
26336
27149
  headers: {
26337
27150
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26338
27151
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26343,7 +27156,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26343
27156
  [name: string]: unknown;
26344
27157
  };
26345
27158
  content: {
26346
- "application/json": components["schemas"]["RoastGetResponse"];
27159
+ "application/json": components["schemas"]["RoastBatchMutationResponse"];
26347
27160
  };
26348
27161
  };
26349
27162
  400: {
@@ -26402,62 +27215,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26402
27215
  "application/json": components["schemas"]["ErrorResponse"];
26403
27216
  };
26404
27217
  };
26405
- 429: components["responses"]["ApiRateLimitExceeded"];
26406
- };
26407
- }, {
26408
- params: {
26409
- path: {
26410
- id: string;
26411
- };
26412
- query: {
26413
- includeTemps?: boolean | null;
26414
- includeEvents?: boolean | null;
26415
- } | undefined;
26416
- };
26417
- }, `${string}/${string}`>>;
26418
- /** Fetch an owner roast's adaptively sampled chart curve and metadata. */
26419
- chartData: (id: string, query?: RoastChartDataQuery) => Promise<openapi_fetch.FetchResponse<{
26420
- parameters: {
26421
- query?: {
26422
- target_points?: number;
26423
- };
26424
- header?: never;
26425
- path: {
26426
- id: string;
26427
- };
26428
- cookie?: never;
26429
- };
26430
- requestBody?: never;
26431
- responses: {
26432
- 200: {
26433
- headers: {
26434
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26435
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26436
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26437
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26438
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26439
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26440
- [name: string]: unknown;
26441
- };
26442
- content: {
26443
- "application/json": components["schemas"]["RoastChartDataResponse"];
26444
- };
26445
- };
26446
- 400: {
26447
- headers: {
26448
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26449
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26450
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26451
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26452
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26453
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26454
- [name: string]: unknown;
26455
- };
26456
- content: {
26457
- "application/json": components["schemas"]["ErrorResponse"];
26458
- };
26459
- };
26460
- 401: {
27218
+ 409: {
26461
27219
  headers: {
26462
27220
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26463
27221
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26471,7 +27229,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26471
27229
  "application/json": components["schemas"]["ErrorResponse"];
26472
27230
  };
26473
27231
  };
26474
- 403: {
27232
+ 429: {
26475
27233
  headers: {
26476
27234
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26477
27235
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26479,13 +27237,15 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26479
27237
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26480
27238
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26481
27239
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27240
+ "Retry-After": components["headers"]["Retry-After"];
27241
+ "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
26482
27242
  [name: string]: unknown;
26483
27243
  };
26484
27244
  content: {
26485
27245
  "application/json": components["schemas"]["ErrorResponse"];
26486
27246
  };
26487
27247
  };
26488
- 404: {
27248
+ 503: {
26489
27249
  headers: {
26490
27250
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26491
27251
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26499,42 +27259,45 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26499
27259
  "application/json": components["schemas"]["ErrorResponse"];
26500
27260
  };
26501
27261
  };
26502
- 429: components["responses"]["ApiRateLimitExceeded"];
26503
27262
  };
26504
27263
  }, {
27264
+ body: {
27265
+ batchName: string;
27266
+ roastDate?: string;
27267
+ notes?: string;
27268
+ targets?: string;
27269
+ items: components["schemas"]["RoastBatchItem"][];
27270
+ };
26505
27271
  params: {
26506
- path: {
26507
- id: string;
27272
+ header: {
27273
+ "idempotency-key": string;
26508
27274
  };
26509
- query: {
26510
- target_points?: number;
26511
- } | undefined;
26512
27275
  };
26513
27276
  }, `${string}/${string}`>>;
26514
27277
  /**
26515
- * Create an owner roast profile, optionally with nested temperature/event
26516
- * rows. Requires a session or an owner-bound API key carrying the exact
26517
- * `roast:write` scope. The optional `idempotencyKey` is payload-bound:
26518
- * same-key, same-payload retries replay, while changed payloads conflict.
27278
+ * Update one of the caller's own roast profiles. Pass `ifMatch` (the
27279
+ * row's `last_updated`) to enable optimistic concurrency (409 on mismatch).
26519
27280
  */
26520
- create: (body: RoastCreateRequest, options?: {
26521
- idempotencyKey?: string;
27281
+ update: (id: number, body: RoastUpdateRequest, options?: {
27282
+ ifMatch?: string;
26522
27283
  }) => Promise<openapi_fetch.FetchResponse<{
26523
27284
  parameters: {
26524
27285
  query?: never;
26525
27286
  header?: {
26526
- "idempotency-key"?: string;
27287
+ "if-match"?: string;
27288
+ };
27289
+ path: {
27290
+ id: number;
26527
27291
  };
26528
- path?: never;
26529
27292
  cookie?: never;
26530
27293
  };
26531
27294
  requestBody: {
26532
27295
  content: {
26533
- "application/json": components["schemas"]["RoastCreateRequest"];
27296
+ "application/json": components["schemas"]["RoastUpdateRequest"];
26534
27297
  };
26535
27298
  };
26536
27299
  responses: {
26537
- 201: {
27300
+ 200: {
26538
27301
  headers: {
26539
27302
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26540
27303
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26650,16 +27413,23 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26650
27413
  };
26651
27414
  };
26652
27415
  }, {
27416
+ params: {
27417
+ path: {
27418
+ id: number;
27419
+ };
27420
+ header: {
27421
+ "if-match": string;
27422
+ } | undefined;
27423
+ };
26653
27424
  body: {
26654
- coffeeId: number;
26655
27425
  coffeeName?: string;
26656
27426
  batchName?: string;
26657
27427
  roastDate?: string;
26658
- ozIn?: number;
26659
- ozOut?: number;
27428
+ ozIn?: number | null;
27429
+ ozOut?: number | null;
26660
27430
  weightLossPercent?: number;
26661
- notes?: string;
26662
- targets?: string;
27431
+ notes?: string | null;
27432
+ targets?: string | null;
26663
27433
  roasterType?: string;
26664
27434
  roasterSize?: string;
26665
27435
  temperatureUnit?: "F" | "C";
@@ -26688,32 +27458,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26688
27458
  temperatures?: components["schemas"]["RoastTemperatureInput"][];
26689
27459
  events?: components["schemas"]["RoastEventInput"][];
26690
27460
  };
26691
- params: {
26692
- header: {
26693
- "idempotency-key": string;
26694
- };
26695
- } | undefined;
26696
27461
  }, `${string}/${string}`>>;
26697
- /**
26698
- * Create every profile in one named batch atomically. The required
26699
- * payload-bound idempotency key makes transport retries safe.
26700
- */
26701
- createBatch: (body: RoastBatchCreateRequest, idempotencyKey: string) => Promise<openapi_fetch.FetchResponse<{
27462
+ /** Delete one of the caller's own roast profiles. */
27463
+ delete: (id: number) => Promise<openapi_fetch.FetchResponse<{
26702
27464
  parameters: {
26703
27465
  query?: never;
26704
- header: {
26705
- "idempotency-key": string;
27466
+ header?: never;
27467
+ path: {
27468
+ id: number;
26706
27469
  };
26707
- path?: never;
26708
27470
  cookie?: never;
26709
27471
  };
26710
- requestBody: {
26711
- content: {
26712
- "application/json": components["schemas"]["RoastBatchCreateRequest"];
26713
- };
26714
- };
27472
+ requestBody?: never;
26715
27473
  responses: {
26716
- 201: {
27474
+ 200: {
26717
27475
  headers: {
26718
27476
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26719
27477
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26724,7 +27482,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26724
27482
  [name: string]: unknown;
26725
27483
  };
26726
27484
  content: {
26727
- "application/json": components["schemas"]["RoastBatchMutationResponse"];
27485
+ "application/json": components["schemas"]["RoastDeleteResponse"];
26728
27486
  };
26729
27487
  };
26730
27488
  400: {
@@ -26783,20 +27541,6 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26783
27541
  "application/json": components["schemas"]["ErrorResponse"];
26784
27542
  };
26785
27543
  };
26786
- 409: {
26787
- headers: {
26788
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26789
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26790
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26791
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26792
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26793
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26794
- [name: string]: unknown;
26795
- };
26796
- content: {
26797
- "application/json": components["schemas"]["ErrorResponse"];
26798
- };
26799
- };
26800
27544
  429: {
26801
27545
  headers: {
26802
27546
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -26826,44 +27570,26 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26826
27570
  content: {
26827
27571
  "application/json": components["schemas"]["ErrorResponse"];
26828
27572
  };
26829
- };
26830
- };
26831
- }, {
26832
- body: {
26833
- batchName: string;
26834
- roastDate?: string;
26835
- notes?: string;
26836
- targets?: string;
26837
- items: components["schemas"]["RoastBatchItem"][];
27573
+ };
26838
27574
  };
27575
+ }, {
26839
27576
  params: {
26840
- header: {
26841
- "idempotency-key": string;
27577
+ path: {
27578
+ id: number;
26842
27579
  };
26843
27580
  };
26844
27581
  }, `${string}/${string}`>>;
26845
- /**
26846
- * Update one of the caller's own roast profiles. Pass `ifMatch` (the
26847
- * row's `last_updated`) to enable optimistic concurrency (409 on mismatch).
26848
- */
26849
- update: (id: number, body: RoastUpdateRequest, options?: {
26850
- ifMatch?: string;
26851
- }) => Promise<openapi_fetch.FetchResponse<{
27582
+ /** Delete every owner roast carrying one exact batch name. Session-only. */
27583
+ deleteBatch: (batchName: string) => Promise<openapi_fetch.FetchResponse<{
26852
27584
  parameters: {
26853
27585
  query?: never;
26854
- header?: {
26855
- "if-match"?: string;
26856
- };
27586
+ header?: never;
26857
27587
  path: {
26858
- id: number;
27588
+ batchName: string;
26859
27589
  };
26860
27590
  cookie?: never;
26861
27591
  };
26862
- requestBody: {
26863
- content: {
26864
- "application/json": components["schemas"]["RoastUpdateRequest"];
26865
- };
26866
- };
27592
+ requestBody?: never;
26867
27593
  responses: {
26868
27594
  200: {
26869
27595
  headers: {
@@ -26876,7 +27602,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26876
27602
  [name: string]: unknown;
26877
27603
  };
26878
27604
  content: {
26879
- "application/json": components["schemas"]["RoastDetailResponse"];
27605
+ "application/json": components["schemas"]["RoastBatchDeleteResponse"];
26880
27606
  };
26881
27607
  };
26882
27608
  400: {
@@ -26935,20 +27661,6 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26935
27661
  "application/json": components["schemas"]["ErrorResponse"];
26936
27662
  };
26937
27663
  };
26938
- 409: {
26939
- headers: {
26940
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26941
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26942
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26943
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26944
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26945
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26946
- [name: string]: unknown;
26947
- };
26948
- content: {
26949
- "application/json": components["schemas"]["ErrorResponse"];
26950
- };
26951
- };
26952
27664
  429: {
26953
27665
  headers: {
26954
27666
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -26983,61 +27695,32 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26983
27695
  }, {
26984
27696
  params: {
26985
27697
  path: {
26986
- id: number;
27698
+ batchName: string;
26987
27699
  };
26988
- header: {
26989
- "if-match": string;
26990
- } | undefined;
26991
- };
26992
- body: {
26993
- coffeeName?: string;
26994
- batchName?: string;
26995
- roastDate?: string;
26996
- ozIn?: number | null;
26997
- ozOut?: number | null;
26998
- weightLossPercent?: number;
26999
- notes?: string | null;
27000
- targets?: string | null;
27001
- roasterType?: string;
27002
- roasterSize?: string;
27003
- temperatureUnit?: "F" | "C";
27004
- totalRoastTime?: number;
27005
- developmentPercent?: number;
27006
- dataSource?: string;
27007
- roastUuid?: string;
27008
- fcStartTime?: number;
27009
- fcStartTemp?: number;
27010
- fcEndTime?: number;
27011
- fcEndTemp?: number;
27012
- dropTime?: number;
27013
- dropTemp?: number;
27014
- chargeTemp?: number;
27015
- chargeTime?: number;
27016
- tpTime?: number;
27017
- tpTemp?: number;
27018
- totalRor?: number;
27019
- dryPercent?: number;
27020
- maillardPercent?: number;
27021
- auc?: number;
27022
- dryPhaseRor?: number;
27023
- midPhaseRor?: number;
27024
- finishPhaseRor?: number;
27025
- dryPhaseDeltaTemp?: number;
27026
- temperatures?: components["schemas"]["RoastTemperatureInput"][];
27027
- events?: components["schemas"]["RoastEventInput"][];
27028
27700
  };
27029
27701
  }, `${string}/${string}`>>;
27030
- /** Delete one of the caller's own roast profiles. */
27031
- delete: (id: number) => Promise<openapi_fetch.FetchResponse<{
27702
+ /**
27703
+ * Replace live temperature samples and all event markers atomically,
27704
+ * while preserving non-live temperatures and deriving milestone fields.
27705
+ */
27706
+ replaceLiveCurve: (id: number, body: RoastLiveCurveRequest, options?: {
27707
+ ifMatch?: string;
27708
+ }) => Promise<openapi_fetch.FetchResponse<{
27032
27709
  parameters: {
27033
27710
  query?: never;
27034
- header?: never;
27711
+ header?: {
27712
+ "if-match"?: string;
27713
+ };
27035
27714
  path: {
27036
27715
  id: number;
27037
27716
  };
27038
27717
  cookie?: never;
27039
27718
  };
27040
- requestBody?: never;
27719
+ requestBody: {
27720
+ content: {
27721
+ "application/json": components["schemas"]["RoastLiveCurveRequest"];
27722
+ };
27723
+ };
27041
27724
  responses: {
27042
27725
  200: {
27043
27726
  headers: {
@@ -27050,7 +27733,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27050
27733
  [name: string]: unknown;
27051
27734
  };
27052
27735
  content: {
27053
- "application/json": components["schemas"]["RoastDeleteResponse"];
27736
+ "application/json": components["schemas"]["RoastDetailResponse"];
27054
27737
  };
27055
27738
  };
27056
27739
  400: {
@@ -27109,6 +27792,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27109
27792
  "application/json": components["schemas"]["ErrorResponse"];
27110
27793
  };
27111
27794
  };
27795
+ 409: {
27796
+ headers: {
27797
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27798
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
27799
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27800
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27801
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27802
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27803
+ [name: string]: unknown;
27804
+ };
27805
+ content: {
27806
+ "application/json": components["schemas"]["ErrorResponse"];
27807
+ };
27808
+ };
27112
27809
  429: {
27113
27810
  headers: {
27114
27811
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -27145,21 +27842,41 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27145
27842
  path: {
27146
27843
  id: number;
27147
27844
  };
27845
+ header: {
27846
+ "if-match": string;
27847
+ } | undefined;
27848
+ };
27849
+ body: {
27850
+ temperatures: components["schemas"]["RoastTemperatureInput"][];
27851
+ events: components["schemas"]["RoastEventInput"][];
27148
27852
  };
27149
27853
  }, `${string}/${string}`>>;
27150
- /** Delete every owner roast carrying one exact batch name. Session-only. */
27151
- deleteBatch: (batchName: string) => Promise<openapi_fetch.FetchResponse<{
27854
+ /**
27855
+ * Create a roast profile from an Artisan `.alog` file against one of the
27856
+ * caller's green-coffee lots, persisting the imported curve, events, and
27857
+ * an artisan_import_log entry atomically. Requires a session or an
27858
+ * owner-bound API key carrying the exact `roast:write` scope. The
27859
+ * optional `idempotencyKey` is payload-bound: same-key, same-payload
27860
+ * retries replay, while changed payloads conflict.
27861
+ */
27862
+ import: (body: RoastImportRequest, options?: {
27863
+ idempotencyKey?: string;
27864
+ }) => Promise<openapi_fetch.FetchResponse<{
27152
27865
  parameters: {
27153
27866
  query?: never;
27154
- header?: never;
27155
- path: {
27156
- batchName: string;
27867
+ header?: {
27868
+ "idempotency-key"?: string;
27157
27869
  };
27870
+ path?: never;
27158
27871
  cookie?: never;
27159
27872
  };
27160
- requestBody?: never;
27873
+ requestBody: {
27874
+ content: {
27875
+ "application/json": components["schemas"]["RoastImportCreateRequest"];
27876
+ };
27877
+ };
27161
27878
  responses: {
27162
- 200: {
27879
+ 201: {
27163
27880
  headers: {
27164
27881
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27165
27882
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27170,7 +27887,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27170
27887
  [name: string]: unknown;
27171
27888
  };
27172
27889
  content: {
27173
- "application/json": components["schemas"]["RoastBatchDeleteResponse"];
27890
+ "application/json": components["schemas"]["RoastImportResponse"];
27174
27891
  };
27175
27892
  };
27176
27893
  400: {
@@ -27229,6 +27946,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27229
27946
  "application/json": components["schemas"]["ErrorResponse"];
27230
27947
  };
27231
27948
  };
27949
+ 409: {
27950
+ headers: {
27951
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27952
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
27953
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27954
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27955
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27956
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27957
+ [name: string]: unknown;
27958
+ };
27959
+ content: {
27960
+ "application/json": components["schemas"]["ErrorResponse"];
27961
+ };
27962
+ };
27232
27963
  429: {
27233
27964
  headers: {
27234
27965
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -27261,17 +27992,29 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27261
27992
  };
27262
27993
  };
27263
27994
  }, {
27995
+ body: {
27996
+ fileName: string;
27997
+ fileContent: string;
27998
+ coffeeId: number;
27999
+ batchName?: string;
28000
+ ozIn?: number;
28001
+ roastNotes?: string;
28002
+ roastTargets?: string;
28003
+ fileSize?: number;
28004
+ };
27264
28005
  params: {
27265
- path: {
27266
- batchName: string;
28006
+ header: {
28007
+ "idempotency-key": string;
27267
28008
  };
27268
- };
28009
+ } | undefined;
27269
28010
  }, `${string}/${string}`>>;
27270
28011
  /**
27271
- * Replace live temperature samples and all event markers atomically,
27272
- * while preserving non-live temperatures and deriving milestone fields.
28012
+ * Replace the Artisan import data on one of the caller's existing roasts,
28013
+ * re-deriving its curve, events, and computed metrics while preserving the
28014
+ * roast's identity. Pass `ifMatch` (the roast's `last_updated`) to enable
28015
+ * optimistic concurrency (409 on mismatch).
27273
28016
  */
27274
- replaceLiveCurve: (id: number, body: RoastLiveCurveRequest, options?: {
28017
+ replaceArtisanImport: (id: number, body: RoastArtisanImportReplaceRequest, options?: {
27275
28018
  ifMatch?: string;
27276
28019
  }) => Promise<openapi_fetch.FetchResponse<{
27277
28020
  parameters: {
@@ -27286,7 +28029,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27286
28029
  };
27287
28030
  requestBody: {
27288
28031
  content: {
27289
- "application/json": components["schemas"]["RoastLiveCurveRequest"];
28032
+ "application/json": components["schemas"]["RoastArtisanImportReplaceRequest"];
27290
28033
  };
27291
28034
  };
27292
28035
  responses: {
@@ -27301,7 +28044,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27301
28044
  [name: string]: unknown;
27302
28045
  };
27303
28046
  content: {
27304
- "application/json": components["schemas"]["RoastDetailResponse"];
28047
+ "application/json": components["schemas"]["RoastImportResponse"];
27305
28048
  };
27306
28049
  };
27307
28050
  400: {
@@ -27415,64 +28158,27 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27415
28158
  } | undefined;
27416
28159
  };
27417
28160
  body: {
27418
- temperatures: components["schemas"]["RoastTemperatureInput"][];
27419
- events: components["schemas"]["RoastEventInput"][];
28161
+ fileName: string;
28162
+ fileContent: string;
28163
+ fileSize?: number;
27420
28164
  };
27421
28165
  }, `${string}/${string}`>>;
27422
28166
  /**
27423
- * Create a roast profile from an Artisan `.alog` file against one of the
27424
- * caller's green-coffee lots, persisting the imported curve, events, and
27425
- * an artisan_import_log entry atomically. Requires a session or an
27426
- * owner-bound API key carrying the exact `roast:write` scope. The
27427
- * optional `idempotencyKey` is payload-bound: same-key, same-payload
27428
- * retries replay, while changed payloads conflict.
28167
+ * Clear import-derived curve, events, metrics, and provenance data from
28168
+ * one of the caller's existing roasts without deleting the roast profile.
27429
28169
  */
27430
- import: (body: RoastImportRequest, options?: {
27431
- idempotencyKey?: string;
27432
- }) => Promise<openapi_fetch.FetchResponse<{
28170
+ clearArtisanImport: (id: number) => Promise<openapi_fetch.FetchResponse<{
27433
28171
  parameters: {
27434
28172
  query?: never;
27435
- header?: {
27436
- "idempotency-key"?: string;
27437
- };
27438
- path?: never;
27439
- cookie?: never;
27440
- };
27441
- requestBody: {
27442
- content: {
27443
- "application/json": components["schemas"]["RoastImportCreateRequest"];
27444
- };
27445
- };
27446
- responses: {
27447
- 201: {
27448
- headers: {
27449
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27450
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
27451
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27452
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27453
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27454
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27455
- [name: string]: unknown;
27456
- };
27457
- content: {
27458
- "application/json": components["schemas"]["RoastImportResponse"];
27459
- };
27460
- };
27461
- 400: {
27462
- headers: {
27463
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27464
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
27465
- "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27466
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27467
- "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27468
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27469
- [name: string]: unknown;
27470
- };
27471
- content: {
27472
- "application/json": components["schemas"]["ErrorResponse"];
27473
- };
28173
+ header?: never;
28174
+ path: {
28175
+ id: number;
27474
28176
  };
27475
- 401: {
28177
+ cookie?: never;
28178
+ };
28179
+ requestBody?: never;
28180
+ responses: {
28181
+ 200: {
27476
28182
  headers: {
27477
28183
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27478
28184
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27483,10 +28189,10 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27483
28189
  [name: string]: unknown;
27484
28190
  };
27485
28191
  content: {
27486
- "application/json": components["schemas"]["ErrorResponse"];
28192
+ "application/json": components["schemas"]["RoastArtisanImportClearResponse"];
27487
28193
  };
27488
28194
  };
27489
- 403: {
28195
+ 401: {
27490
28196
  headers: {
27491
28197
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27492
28198
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27500,7 +28206,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27500
28206
  "application/json": components["schemas"]["ErrorResponse"];
27501
28207
  };
27502
28208
  };
27503
- 404: {
28209
+ 403: {
27504
28210
  headers: {
27505
28211
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27506
28212
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27514,7 +28220,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27514
28220
  "application/json": components["schemas"]["ErrorResponse"];
27515
28221
  };
27516
28222
  };
27517
- 409: {
28223
+ 404: {
27518
28224
  headers: {
27519
28225
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27520
28226
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27560,46 +28266,25 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27560
28266
  };
27561
28267
  };
27562
28268
  }, {
27563
- body: {
27564
- fileName: string;
27565
- fileContent: string;
27566
- coffeeId: number;
27567
- batchName?: string;
27568
- ozIn?: number;
27569
- roastNotes?: string;
27570
- roastTargets?: string;
27571
- fileSize?: number;
27572
- };
27573
28269
  params: {
27574
- header: {
27575
- "idempotency-key": string;
27576
- };
27577
- } | undefined;
27578
- }, `${string}/${string}`>>;
27579
- /**
27580
- * Replace the Artisan import data on one of the caller's existing roasts,
27581
- * re-deriving its curve, events, and computed metrics while preserving the
27582
- * roast's identity. Pass `ifMatch` (the roast's `last_updated`) to enable
27583
- * optimistic concurrency (409 on mismatch).
27584
- */
27585
- replaceArtisanImport: (id: number, body: RoastArtisanImportReplaceRequest, options?: {
27586
- ifMatch?: string;
27587
- }) => Promise<openapi_fetch.FetchResponse<{
27588
- parameters: {
27589
- query?: never;
27590
- header?: {
27591
- "if-match"?: string;
27592
- };
27593
28270
  path: {
27594
28271
  id: number;
27595
28272
  };
27596
- cookie?: never;
27597
28273
  };
27598
- requestBody: {
27599
- content: {
27600
- "application/json": components["schemas"]["RoastArtisanImportReplaceRequest"];
28274
+ }, `${string}/${string}`>>;
28275
+ };
28276
+ referenceProfiles: {
28277
+ /** List Studio reference profiles without mixing them into roast history. */
28278
+ list: (includeArchived?: boolean) => Promise<openapi_fetch.FetchResponse<{
28279
+ parameters: {
28280
+ query?: {
28281
+ includeArchived?: boolean;
27601
28282
  };
28283
+ header?: never;
28284
+ path?: never;
28285
+ cookie?: never;
27602
28286
  };
28287
+ requestBody?: never;
27603
28288
  responses: {
27604
28289
  200: {
27605
28290
  headers: {
@@ -27612,10 +28297,10 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27612
28297
  [name: string]: unknown;
27613
28298
  };
27614
28299
  content: {
27615
- "application/json": components["schemas"]["RoastImportResponse"];
28300
+ "application/json": components["schemas"]["ReferenceProfileListResponse"];
27616
28301
  };
27617
28302
  };
27618
- 400: {
28303
+ 401: {
27619
28304
  headers: {
27620
28305
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27621
28306
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27629,7 +28314,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27629
28314
  "application/json": components["schemas"]["ErrorResponse"];
27630
28315
  };
27631
28316
  };
27632
- 401: {
28317
+ 403: {
27633
28318
  headers: {
27634
28319
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27635
28320
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27643,7 +28328,41 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27643
28328
  "application/json": components["schemas"]["ErrorResponse"];
27644
28329
  };
27645
28330
  };
27646
- 403: {
28331
+ 429: components["responses"]["ApiRateLimitExceeded"];
28332
+ };
28333
+ }, {
28334
+ params: {
28335
+ query: {
28336
+ includeArchived: boolean;
28337
+ };
28338
+ };
28339
+ }, `${string}/${string}`>>;
28340
+ get: (id: string) => Promise<openapi_fetch.FetchResponse<{
28341
+ parameters: {
28342
+ query?: never;
28343
+ header?: never;
28344
+ path: {
28345
+ id: string;
28346
+ };
28347
+ cookie?: never;
28348
+ };
28349
+ requestBody?: never;
28350
+ responses: {
28351
+ 200: {
28352
+ headers: {
28353
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28354
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28355
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28356
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28357
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28358
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28359
+ [name: string]: unknown;
28360
+ };
28361
+ content: {
28362
+ "application/json": components["schemas"]["ReferenceProfileResponse"];
28363
+ };
28364
+ };
28365
+ 400: {
27647
28366
  headers: {
27648
28367
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27649
28368
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27657,7 +28376,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27657
28376
  "application/json": components["schemas"]["ErrorResponse"];
27658
28377
  };
27659
28378
  };
27660
- 404: {
28379
+ 401: {
27661
28380
  headers: {
27662
28381
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27663
28382
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27671,7 +28390,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27671
28390
  "application/json": components["schemas"]["ErrorResponse"];
27672
28391
  };
27673
28392
  };
27674
- 409: {
28393
+ 403: {
27675
28394
  headers: {
27676
28395
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27677
28396
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27685,7 +28404,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27685
28404
  "application/json": components["schemas"]["ErrorResponse"];
27686
28405
  };
27687
28406
  };
27688
- 429: {
28407
+ 404: {
27689
28408
  headers: {
27690
28409
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27691
28410
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27693,15 +28412,13 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27693
28412
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27694
28413
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27695
28414
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27696
- "Retry-After": components["headers"]["Retry-After"];
27697
- "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
27698
28415
  [name: string]: unknown;
27699
28416
  };
27700
28417
  content: {
27701
28418
  "application/json": components["schemas"]["ErrorResponse"];
27702
28419
  };
27703
28420
  };
27704
- 503: {
28421
+ 409: {
27705
28422
  headers: {
27706
28423
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27707
28424
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27715,32 +28432,22 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27715
28432
  "application/json": components["schemas"]["ErrorResponse"];
27716
28433
  };
27717
28434
  };
28435
+ 429: components["responses"]["ApiRateLimitExceeded"];
27718
28436
  };
27719
28437
  }, {
27720
28438
  params: {
27721
28439
  path: {
27722
- id: number;
28440
+ id: string;
27723
28441
  };
27724
- header: {
27725
- "if-match": string;
27726
- } | undefined;
27727
- };
27728
- body: {
27729
- fileName: string;
27730
- fileContent: string;
27731
- fileSize?: number;
27732
28442
  };
27733
28443
  }, `${string}/${string}`>>;
27734
- /**
27735
- * Clear import-derived curve, events, metrics, and provenance data from
27736
- * one of the caller's existing roasts without deleting the roast profile.
27737
- */
27738
- clearArtisanImport: (id: number) => Promise<openapi_fetch.FetchResponse<{
28444
+ chart: (id: string, revisionId: string) => Promise<openapi_fetch.FetchResponse<{
27739
28445
  parameters: {
27740
28446
  query?: never;
27741
28447
  header?: never;
27742
28448
  path: {
27743
- id: number;
28449
+ id: string;
28450
+ revisionId: string;
27744
28451
  };
27745
28452
  cookie?: never;
27746
28453
  };
@@ -27757,10 +28464,10 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27757
28464
  [name: string]: unknown;
27758
28465
  };
27759
28466
  content: {
27760
- "application/json": components["schemas"]["RoastArtisanImportClearResponse"];
28467
+ "application/json": components["schemas"]["ReferenceProfileChartResponse"];
27761
28468
  };
27762
28469
  };
27763
- 401: {
28470
+ 400: {
27764
28471
  headers: {
27765
28472
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27766
28473
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27774,7 +28481,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27774
28481
  "application/json": components["schemas"]["ErrorResponse"];
27775
28482
  };
27776
28483
  };
27777
- 403: {
28484
+ 401: {
27778
28485
  headers: {
27779
28486
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27780
28487
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27788,7 +28495,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27788
28495
  "application/json": components["schemas"]["ErrorResponse"];
27789
28496
  };
27790
28497
  };
27791
- 404: {
28498
+ 403: {
27792
28499
  headers: {
27793
28500
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27794
28501
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27802,7 +28509,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27802
28509
  "application/json": components["schemas"]["ErrorResponse"];
27803
28510
  };
27804
28511
  };
27805
- 429: {
28512
+ 404: {
27806
28513
  headers: {
27807
28514
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27808
28515
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27810,15 +28517,13 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27810
28517
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27811
28518
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27812
28519
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27813
- "Retry-After": components["headers"]["Retry-After"];
27814
- "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
27815
28520
  [name: string]: unknown;
27816
28521
  };
27817
28522
  content: {
27818
28523
  "application/json": components["schemas"]["ErrorResponse"];
27819
28524
  };
27820
28525
  };
27821
- 503: {
28526
+ 409: {
27822
28527
  headers: {
27823
28528
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27824
28529
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27832,27 +28537,32 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27832
28537
  "application/json": components["schemas"]["ErrorResponse"];
27833
28538
  };
27834
28539
  };
28540
+ 429: components["responses"]["ApiRateLimitExceeded"];
27835
28541
  };
27836
28542
  }, {
27837
28543
  params: {
27838
28544
  path: {
27839
- id: number;
28545
+ id: string;
28546
+ revisionId: string;
27840
28547
  };
27841
28548
  };
27842
28549
  }, `${string}/${string}`>>;
27843
- };
27844
- referenceProfiles: {
27845
- /** List Studio reference profiles without mixing them into roast history. */
27846
- list: (includeArchived?: boolean) => Promise<openapi_fetch.FetchResponse<{
28550
+ /** Preview explicit changes without saving or changing the parent. */
28551
+ preview: (id: string, revisionId: string, body: ReferenceProfileGenerationRequest) => Promise<openapi_fetch.FetchResponse<{
27847
28552
  parameters: {
27848
- query?: {
27849
- includeArchived?: boolean;
27850
- };
28553
+ query?: never;
27851
28554
  header?: never;
27852
- path?: never;
28555
+ path: {
28556
+ id: string;
28557
+ revisionId: string;
28558
+ };
27853
28559
  cookie?: never;
27854
28560
  };
27855
- requestBody?: never;
28561
+ requestBody: {
28562
+ content: {
28563
+ "application/json": components["schemas"]["ReferenceProfileGenerationRequest"];
28564
+ };
28565
+ };
27856
28566
  responses: {
27857
28567
  200: {
27858
28568
  headers: {
@@ -27865,7 +28575,21 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27865
28575
  [name: string]: unknown;
27866
28576
  };
27867
28577
  content: {
27868
- "application/json": components["schemas"]["ReferenceProfileListResponse"];
28578
+ "application/json": components["schemas"]["ReferenceProfileGenerationPreviewResponse"];
28579
+ };
28580
+ };
28581
+ 400: {
28582
+ headers: {
28583
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28584
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28585
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28586
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28587
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28588
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28589
+ [name: string]: unknown;
28590
+ };
28591
+ content: {
28592
+ "application/json": components["schemas"]["ErrorResponse"];
27869
28593
  };
27870
28594
  };
27871
28595
  401: {
@@ -27896,27 +28620,80 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27896
28620
  "application/json": components["schemas"]["ErrorResponse"];
27897
28621
  };
27898
28622
  };
28623
+ 404: {
28624
+ headers: {
28625
+ "X-RateLimit-Limit": components["headers"] /** Reflect bounded recent messages into versioned session-owner memory. */["X-RateLimit-Limit"];
28626
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28627
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28628
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28629
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28630
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28631
+ [name: string]: unknown;
28632
+ };
28633
+ content: {
28634
+ "application/json": components["schemas"]["ErrorResponse"];
28635
+ };
28636
+ };
28637
+ 409: {
28638
+ headers: {
28639
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28640
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28641
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28642
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28643
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28644
+ "X-RateLimit-Burst-Reset": components["headers"] /**
28645
+ * Atomically create owner-private manual inventory lots. The required
28646
+ * idempotency UUID is the stable batch identity and can be reconciled
28647
+ * with `getManualBatch` after an uncertain response.
28648
+ */["X-RateLimit-Burst-Reset"];
28649
+ [name: string]: unknown;
28650
+ };
28651
+ content: {
28652
+ "application/json": components["schemas"]["ErrorResponse"];
28653
+ };
28654
+ };
27899
28655
  429: components["responses"]["ApiRateLimitExceeded"];
27900
28656
  };
27901
28657
  }, {
27902
28658
  params: {
27903
- query: {
27904
- includeArchived: boolean;
28659
+ path: {
28660
+ id: string;
28661
+ revisionId: string;
28662
+ };
28663
+ };
28664
+ body: {
28665
+ title: string;
28666
+ notes?: string;
28667
+ changes: {
28668
+ temperatureAdjustments: {
28669
+ kind: "bean_temperature" | "environmental_temperature";
28670
+ startMilliseconds: number;
28671
+ endMilliseconds: number;
28672
+ delta: number;
28673
+ }[];
27905
28674
  };
27906
28675
  };
27907
28676
  }, `${string}/${string}`>>;
27908
- get: (id: string) => Promise<openapi_fetch.FetchResponse<{
28677
+ /** Save an immutable generated reference with parent lineage. */
28678
+ generate: (id: string, revisionId: string, body: ReferenceProfileGenerationRequest, idempotencyKey: string) => Promise<openapi_fetch.FetchResponse<{
27909
28679
  parameters: {
27910
28680
  query?: never;
27911
- header?: never;
28681
+ header: {
28682
+ "idempotency-key": string;
28683
+ };
27912
28684
  path: {
27913
28685
  id: string;
28686
+ revisionId: string;
27914
28687
  };
27915
28688
  cookie?: never;
27916
28689
  };
27917
- requestBody?: never;
28690
+ requestBody: {
28691
+ content: {
28692
+ "application/json": components["schemas"]["ReferenceProfileGenerationRequest"];
28693
+ };
28694
+ };
27918
28695
  responses: {
27919
- 200: {
28696
+ 201: {
27920
28697
  headers: {
27921
28698
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27922
28699
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27932,7 +28709,10 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27932
28709
  };
27933
28710
  400: {
27934
28711
  headers: {
27935
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28712
+ "X-RateLimit-Limit": components["headers"] /**
28713
+ * Update one of the caller's own inventory rows. Pass `ifMatch` (the
28714
+ * row's `last_updated`) to enable optimistic concurrency (409 on mismatch).
28715
+ */["X-RateLimit-Limit"];
27936
28716
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
27937
28717
  "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27938
28718
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
@@ -27947,7 +28727,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27947
28727
  401: {
27948
28728
  headers: {
27949
28729
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27950
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28730
+ "X-RateLimit-Remaining": components["headers"] /** List the caller's own roast profiles (owner-scoped). */["X-RateLimit-Remaining"];
27951
28731
  "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27952
28732
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27953
28733
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
@@ -27979,7 +28759,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27979
28759
  "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27980
28760
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27981
28761
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27982
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28762
+ "X-RateLimit-Burst-Reset": components["headers"] /** Delete one of the caller's own roast profiles. */["X-RateLimit-Burst-Reset"];
27983
28763
  [name: string]: unknown;
27984
28764
  };
27985
28765
  content: {
@@ -28006,10 +28786,27 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28006
28786
  params: {
28007
28787
  path: {
28008
28788
  id: string;
28789
+ revisionId: string;
28790
+ };
28791
+ header: {
28792
+ "idempotency-key": string;
28793
+ };
28794
+ };
28795
+ body: {
28796
+ title: string;
28797
+ notes?: string;
28798
+ changes: {
28799
+ temperatureAdjustments: {
28800
+ kind: "bean_temperature" | "environmental_temperature";
28801
+ startMilliseconds: number;
28802
+ endMilliseconds: number;
28803
+ delta: number;
28804
+ }[];
28009
28805
  };
28010
28806
  };
28011
28807
  }, `${string}/${string}`>>;
28012
- chart: (id: string, revisionId: string) => Promise<openapi_fetch.FetchResponse<{
28808
+ /** Retrieve only a saved unsigned generated background profile. */
28809
+ exportGenerated: (id: string, revisionId: string) => Promise<openapi_fetch.FetchResponse<{
28013
28810
  parameters: {
28014
28811
  query?: never;
28015
28812
  header?: never;
@@ -28032,7 +28829,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28032
28829
  [name: string]: unknown;
28033
28830
  };
28034
28831
  content: {
28035
- "application/json": components["schemas"]["ReferenceProfileChartResponse"];
28832
+ "application/json": components["schemas"]["ReferenceProfileGenerationExportResponse"];
28036
28833
  };
28037
28834
  };
28038
28835
  400: {
@@ -28067,7 +28864,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28067
28864
  headers: {
28068
28865
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28069
28866
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28070
- "X-RateLimit-Reset": components["headers"] /** Parchment Price Index (aggregate snapshots). */["X-RateLimit-Reset"];
28867
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28071
28868
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28072
28869
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28073
28870
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
@@ -28121,11 +28918,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28121
28918
  header: {
28122
28919
  "idempotency-key": string;
28123
28920
  };
28124
- path? /**
28125
- * Open a raw AI SDK UI-message stream. The response body is deliberately
28126
- * left unread so BFFs and browser transports can forward chunks without
28127
- * buffering. Aborting the supplied signal cancels the upstream request.
28128
- */: never;
28921
+ path?: never;
28129
28922
  cookie?: never;
28130
28923
  };
28131
28924
  requestBody: {
@@ -28384,11 +29177,9 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28384
29177
  400: {
28385
29178
  headers: {
28386
29179
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28387
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
29180
+ "X-RateLimit-Remaining": components["headers"] /** Create an API key. The raw secret is returned only once. */["X-RateLimit-Remaining"];
28388
29181
  "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28389
- "X-RateLimit-Burst-Limit":
28390
- /** Rotate an API key and return the replacement secret once. */
28391
- components["headers"]["X-RateLimit-Burst-Limit"];
29182
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28392
29183
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28393
29184
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28394
29185
  [name: string]: unknown;
@@ -28414,9 +29205,9 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28414
29205
  403: {
28415
29206
  headers: {
28416
29207
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28417
- "X-RateLimit-Remaining": components["headers"] /** Create or replay an embedded Checkout Session after activation. */["X-RateLimit-Remaining"];
29208
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28418
29209
  "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28419
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
29210
+ "X-RateLimit-Burst-Limit": components["headers"] /** Create or replay an embedded Checkout Session after activation. */["X-RateLimit-Burst-Limit"];
28420
29211
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28421
29212
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28422
29213
  [name: string]: unknown;