@purveyors/sdk 0.44.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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;
@@ -6445,7 +6818,7 @@ interface paths {
6445
6818
  put?: never;
6446
6819
  /**
6447
6820
  * Execute a user-confirmed product action
6448
- * @description Execute one of five closed product actions for the authenticated session owner. The stable executionId provides payload-bound replay, and owner plus entitlement checks run again inside the same database transaction as the mutation. API keys are not accepted.
6821
+ * @description Execute one of the closed product actions for the authenticated session owner. The stable executionId provides payload-bound replay, and owner plus entitlement checks run again inside the same database transaction as the mutation. Generated reference saves require explicit user confirmation and remain planned profiles. API keys are not accepted.
6449
6822
  */
6450
6823
  post: {
6451
6824
  parameters: {
@@ -6520,6 +6893,21 @@ interface paths {
6520
6893
  "application/json": components["schemas"]["ErrorResponse"];
6521
6894
  };
6522
6895
  };
6896
+ /** @description A referenced action resource is no longer available to this account */
6897
+ 404: {
6898
+ headers: {
6899
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
6900
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
6901
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
6902
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
6903
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
6904
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
6905
+ [name: string]: unknown;
6906
+ };
6907
+ content: {
6908
+ "application/json": components["schemas"]["ErrorResponse"];
6909
+ };
6910
+ };
6523
6911
  /** @description The execution id conflicts with another payload or has no replayable result */
6524
6912
  409: {
6525
6913
  headers: {
@@ -12961,6 +13349,8 @@ interface components {
12961
13349
  revision: number;
12962
13350
  /** @enum {string} */
12963
13351
  sourceClass: "artisan_upload" | "executed_roast" | "generated_revision";
13352
+ /** Format: uuid */
13353
+ parentRevisionId: string | null;
12964
13354
  sourceRoast: {
12965
13355
  id: number;
12966
13356
  revision: string;
@@ -13027,17 +13417,120 @@ interface components {
13027
13417
  version: "v1";
13028
13418
  };
13029
13419
  };
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;
13420
+ ReferenceProfileGenerationPreviewResponse: {
13421
+ data: {
13422
+ /** Format: uuid */
13423
+ parentRevisionId: string;
13424
+ title: string;
13425
+ userGoal: string | null;
13426
+ modelRecommendation: string | null;
13427
+ userEdits: string | null;
13428
+ changes: {
13429
+ temperatureAdjustments: {
13430
+ /** @enum {string} */
13431
+ kind: "bean_temperature" | "environmental_temperature";
13432
+ startMilliseconds: number;
13433
+ endMilliseconds: number;
13434
+ delta: number;
13435
+ }[];
13436
+ };
13437
+ measuredFacts: {
13438
+ /** @enum {string} */
13439
+ temperatureUnit: "F" | "C";
13440
+ adjustments: {
13441
+ /** @enum {string} */
13442
+ kind: "bean_temperature" | "environmental_temperature";
13443
+ startMilliseconds: number;
13444
+ endMilliseconds: number;
13445
+ requestedDelta: number;
13446
+ /** @enum {string} */
13447
+ unit: "F" | "C";
13448
+ changedSampleCount: number;
13449
+ unchangedZeroSampleCount: number;
13450
+ parent: {
13451
+ first: {
13452
+ timeMilliseconds: number;
13453
+ value: number;
13454
+ } | null;
13455
+ last: {
13456
+ timeMilliseconds: number;
13457
+ value: number;
13458
+ } | null;
13459
+ minimum: number | null;
13460
+ maximum: number | null;
13461
+ };
13462
+ planned: {
13463
+ first: {
13464
+ timeMilliseconds: number;
13465
+ value: number;
13466
+ } | null;
13467
+ last: {
13468
+ timeMilliseconds: number;
13469
+ value: number;
13470
+ } | null;
13471
+ minimum: number | null;
13472
+ maximum: number | null;
13473
+ };
13474
+ }[];
13475
+ /** @enum {boolean} */
13476
+ eventsUnchanged: true;
13477
+ };
13478
+ chart: components["schemas"]["ReferenceProfileChart"];
13479
+ /** @enum {boolean} */
13480
+ exportEligible: true;
13481
+ };
13482
+ meta: {
13483
+ /** @enum {string} */
13484
+ resource: "reference-profile-previews";
13485
+ /** @enum {string} */
13486
+ namespace: "/v1/reference-profiles";
13487
+ /** @enum {string} */
13488
+ version: "v1";
13489
+ };
13490
+ };
13491
+ ReferenceProfileGenerationRequest: {
13492
+ title: string;
13493
+ notes?: string;
13494
+ userGoal?: string;
13495
+ modelRecommendation?: string;
13496
+ userEdits?: string;
13497
+ changes: {
13498
+ temperatureAdjustments: {
13499
+ /** @enum {string} */
13500
+ kind: "bean_temperature" | "environmental_temperature";
13501
+ startMilliseconds: number;
13502
+ endMilliseconds: number;
13503
+ delta: number;
13504
+ }[];
13505
+ };
13506
+ };
13507
+ ReferenceProfileGenerationExportResponse: {
13508
+ data: {
13509
+ /** @enum {string} */
13510
+ fileName: "Purveyors-reference.alog";
13511
+ fileContent: string;
13512
+ fileSize: number;
13513
+ };
13514
+ meta: {
13515
+ /** @enum {string} */
13516
+ resource: "reference-profile-exports";
13517
+ /** @enum {string} */
13518
+ namespace: "/v1/reference-profiles";
13519
+ /** @enum {string} */
13520
+ version: "v1";
13521
+ };
13522
+ };
13523
+ ReferenceProfileImportRequest: {
13524
+ title?: string;
13525
+ notes?: string;
13526
+ fileName: string;
13527
+ fileContent: string;
13528
+ fileSize?: number;
13529
+ };
13530
+ ReferenceProfileFromRoastRequest: {
13531
+ roastId: number;
13532
+ roastRevision: string;
13533
+ title?: string;
13041
13534
  notes?: string;
13042
13535
  };
13043
13536
  ProfileComparisonResponse: {
@@ -15211,9 +15704,9 @@ interface components {
15211
15704
  data: {
15212
15705
  /** @enum {boolean} */
15213
15706
  success: true;
15214
- id: number;
15707
+ id: number | string;
15215
15708
  /** @enum {string} */
15216
- message: "Bean added to inventory" | "Bean updated" | "Roast session created" | "Roast created from Artisan reference" | "Roast notes updated" | "Sale recorded";
15709
+ message: "Bean added to inventory" | "Bean updated" | "Roast session created" | "Roast created from Artisan reference" | "Planned reference saved" | "Roast notes updated" | "Sale recorded";
15217
15710
  replayed: boolean;
15218
15711
  };
15219
15712
  meta: {
@@ -15301,6 +15794,32 @@ interface components {
15301
15794
  roast_notes?: string;
15302
15795
  roast_targets?: string;
15303
15796
  };
15797
+ } | {
15798
+ /** @description Stable operation id. Repeating it with the same action payload replays the stored result; changing the payload returns 409. */
15799
+ executionId: string;
15800
+ /** @enum {string} */
15801
+ actionType: "create_generated_reference";
15802
+ fields: {
15803
+ /** Format: uuid */
15804
+ parent_profile_id: string;
15805
+ /** Format: uuid */
15806
+ parent_revision_id: string;
15807
+ title: string;
15808
+ notes?: string;
15809
+ user_goal: string;
15810
+ model_recommendation: string;
15811
+ user_edits?: string;
15812
+ changes: {
15813
+ temperatureAdjustments: {
15814
+ /** @enum {string} */
15815
+ kind: "bean_temperature" | "environmental_temperature";
15816
+ startMilliseconds: number;
15817
+ endMilliseconds: number;
15818
+ delta: number;
15819
+ }[];
15820
+ };
15821
+ change_set_summary: string;
15822
+ };
15304
15823
  } | {
15305
15824
  /** @description Stable operation id. Repeating it with the same action payload replays the stored result; changing the payload returns 409. */
15306
15825
  executionId: string;
@@ -17033,6 +17552,7 @@ type RoastChartEvent = components["schemas"]["RoastChartEvent"];
17033
17552
  type ReferenceProfileImportRequest = NonNullable<paths["/v1/reference-profiles/imports"]["post"]["requestBody"]>["content"]["application/json"];
17034
17553
  type ReferenceProfileFromRoastRequest = NonNullable<paths["/v1/reference-profiles/from-roast"]["post"]["requestBody"]>["content"]["application/json"];
17035
17554
  type ReferenceProfileUpdateRequest = NonNullable<paths["/v1/reference-profiles/{id}"]["patch"]["requestBody"]>["content"]["application/json"];
17555
+ type ReferenceProfileGenerationRequest = NonNullable<paths["/v1/reference-profiles/{id}/revisions/{revisionId}/preview"]["post"]["requestBody"]>["content"]["application/json"];
17036
17556
  type ProfileComparisonRequest = NonNullable<paths["/v1/profile-comparisons"]["post"]["requestBody"]>["content"]["application/json"];
17037
17557
  /** Request body for {@link ParchmentClient.roasts.classify}. */
17038
17558
  type RoastClassificationRequest = NonNullable<paths["/v1/roasts/classify"]["post"]["requestBody"]>["content"]["application/json"];
@@ -22375,6 +22895,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
22375
22895
  "application/json": components["schemas"]["ErrorResponse"];
22376
22896
  };
22377
22897
  };
22898
+ 404: {
22899
+ headers: {
22900
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
22901
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
22902
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
22903
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
22904
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
22905
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
22906
+ [name: string]: unknown;
22907
+ };
22908
+ content: {
22909
+ "application/json": components["schemas"]["ErrorResponse"];
22910
+ };
22911
+ };
22378
22912
  409: {
22379
22913
  headers: {
22380
22914
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -22479,6 +23013,27 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
22479
23013
  roast_notes?: string;
22480
23014
  roast_targets?: string;
22481
23015
  };
23016
+ } | {
23017
+ executionId: string;
23018
+ actionType: "create_generated_reference";
23019
+ fields: {
23020
+ parent_profile_id: string;
23021
+ parent_revision_id: string;
23022
+ title: string;
23023
+ notes?: string;
23024
+ user_goal: string;
23025
+ model_recommendation: string;
23026
+ user_edits?: string;
23027
+ changes: {
23028
+ temperatureAdjustments: {
23029
+ kind: "bean_temperature" | "environmental_temperature";
23030
+ startMilliseconds: number;
23031
+ endMilliseconds: number;
23032
+ delta: number;
23033
+ }[];
23034
+ };
23035
+ change_set_summary: string;
23036
+ };
22482
23037
  } | {
22483
23038
  executionId: string;
22484
23039
  actionType: "update_roast_notes";
@@ -25132,7 +25687,307 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25132
25687
  "application/json": components["schemas"]["ErrorResponse"];
25133
25688
  };
25134
25689
  };
25135
- 404: {
25690
+ 404: {
25691
+ headers: {
25692
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25693
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25694
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25695
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25696
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25697
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25698
+ [name: string]: unknown;
25699
+ };
25700
+ content: {
25701
+ "application/json": components["schemas"]["ErrorResponse"];
25702
+ };
25703
+ };
25704
+ 429: components["responses"]["ApiRateLimitExceeded"];
25705
+ };
25706
+ }, {
25707
+ params: {
25708
+ path: {
25709
+ batchId: string;
25710
+ };
25711
+ };
25712
+ }, `${string}/${string}`>>;
25713
+ /**
25714
+ * Durably reserve a complete manual-batch request. Once accepted, clients
25715
+ * only need to persist the batch UUID.
25716
+ */
25717
+ reserveManualBatch: (body: ManualInventoryBatchReserveRequest) => Promise<openapi_fetch.FetchResponse<{
25718
+ parameters: {
25719
+ query?: never;
25720
+ header?: never;
25721
+ path?: never;
25722
+ cookie?: never;
25723
+ };
25724
+ requestBody?: {
25725
+ content: {
25726
+ "application/json": components["schemas"]["ManualInventoryBatchReserveRequest"];
25727
+ };
25728
+ };
25729
+ responses: {
25730
+ 201: {
25731
+ headers: {
25732
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25733
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25734
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25735
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25736
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25737
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25738
+ [name: string]: unknown;
25739
+ };
25740
+ content: {
25741
+ "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
25742
+ };
25743
+ };
25744
+ 400: {
25745
+ headers: {
25746
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25747
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25748
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25749
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25750
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25751
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25752
+ [name: string]: unknown;
25753
+ };
25754
+ content: {
25755
+ "application/json": components["schemas"]["ErrorResponse"];
25756
+ };
25757
+ };
25758
+ 401: {
25759
+ headers: {
25760
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25761
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25762
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25763
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25764
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25765
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25766
+ [name: string]: unknown;
25767
+ };
25768
+ content: {
25769
+ "application/json": components["schemas"]["ErrorResponse"];
25770
+ };
25771
+ };
25772
+ 403: {
25773
+ headers: {
25774
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25775
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25776
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25777
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25778
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25779
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25780
+ [name: string]: unknown;
25781
+ };
25782
+ content: {
25783
+ "application/json": components["schemas"]["ErrorResponse"];
25784
+ };
25785
+ };
25786
+ 409: {
25787
+ headers: {
25788
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25789
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25790
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25791
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25792
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25793
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25794
+ [name: string]: unknown;
25795
+ };
25796
+ content: {
25797
+ "application/json": components["schemas"]["ErrorResponse"];
25798
+ };
25799
+ };
25800
+ 429: {
25801
+ headers: {
25802
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25803
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25804
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25805
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25806
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25807
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25808
+ "Retry-After": components["headers"]["Retry-After"];
25809
+ "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
25810
+ [name: string]: unknown;
25811
+ };
25812
+ content: {
25813
+ "application/json": components["schemas"]["ErrorResponse"];
25814
+ };
25815
+ };
25816
+ 503: {
25817
+ headers: {
25818
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25819
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25820
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25821
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25822
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25823
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25824
+ [name: string]: unknown;
25825
+ };
25826
+ content: {
25827
+ "application/json": components["schemas"]["ErrorResponse"];
25828
+ };
25829
+ };
25830
+ };
25831
+ }, {
25832
+ body: {
25833
+ batchId: string;
25834
+ purchaseDate?: string;
25835
+ taxShipTotal?: number;
25836
+ notes?: string;
25837
+ items: components["schemas"]["ManualInventoryBatchItem"][];
25838
+ };
25839
+ }, `${string}/${string}`>>;
25840
+ /** Commit a reserved batch by UUID with no request body. */
25841
+ commitManualBatch: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
25842
+ parameters: {
25843
+ query?: never;
25844
+ header?: never;
25845
+ path: {
25846
+ batchId: string;
25847
+ };
25848
+ cookie?: never;
25849
+ };
25850
+ requestBody?: never;
25851
+ responses: {
25852
+ 200: {
25853
+ headers: {
25854
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25855
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25856
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25857
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25858
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25859
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25860
+ [name: string]: unknown;
25861
+ };
25862
+ content: {
25863
+ "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
25864
+ };
25865
+ };
25866
+ 401: {
25867
+ headers: {
25868
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25869
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25870
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25871
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25872
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25873
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25874
+ [name: string]: unknown;
25875
+ };
25876
+ content: {
25877
+ "application/json": components["schemas"]["ErrorResponse"];
25878
+ };
25879
+ };
25880
+ 403: {
25881
+ headers: {
25882
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25883
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25884
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25885
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25886
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25887
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25888
+ [name: string]: unknown;
25889
+ };
25890
+ content: {
25891
+ "application/json": components["schemas"]["ErrorResponse"];
25892
+ };
25893
+ };
25894
+ 404: {
25895
+ headers: {
25896
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25897
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25898
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25899
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25900
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25901
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25902
+ [name: string]: unknown;
25903
+ };
25904
+ content: {
25905
+ "application/json": components["schemas"]["ErrorResponse"];
25906
+ };
25907
+ };
25908
+ 429: {
25909
+ headers: {
25910
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25911
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25912
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25913
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25914
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25915
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25916
+ "Retry-After": components["headers"]["Retry-After"];
25917
+ "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
25918
+ [name: string]: unknown;
25919
+ };
25920
+ content: {
25921
+ "application/json": components["schemas"]["ErrorResponse"];
25922
+ };
25923
+ };
25924
+ 503: {
25925
+ headers: {
25926
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25927
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25928
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25929
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25930
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25931
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25932
+ [name: string]: unknown;
25933
+ };
25934
+ content: {
25935
+ "application/json": components["schemas"]["ErrorResponse"];
25936
+ };
25937
+ };
25938
+ };
25939
+ }, {
25940
+ params: {
25941
+ path: {
25942
+ batchId: string;
25943
+ };
25944
+ };
25945
+ }, `${string}/${string}`>>;
25946
+ /**
25947
+ * Get unknown, accepted, in-progress, completed, or terminal-rejected
25948
+ * state. Unknown is explicitly nonterminal, including missing or
25949
+ * cross-tenant UUIDs, so clients retain the UUID and retry.
25950
+ */
25951
+ getManualBatchStatus: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
25952
+ parameters: {
25953
+ query?: never;
25954
+ header?: never;
25955
+ path: {
25956
+ batchId: string;
25957
+ };
25958
+ cookie?: never;
25959
+ };
25960
+ requestBody?: never;
25961
+ responses: {
25962
+ 200: {
25963
+ headers: {
25964
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25965
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25966
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25967
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25968
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25969
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25970
+ [name: string]: unknown;
25971
+ };
25972
+ content: {
25973
+ "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
25974
+ };
25975
+ };
25976
+ 401: {
25977
+ headers: {
25978
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25979
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
25980
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
25981
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25982
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25983
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
25984
+ [name: string]: unknown;
25985
+ };
25986
+ content: {
25987
+ "application/json": components["schemas"]["ErrorResponse"];
25988
+ };
25989
+ };
25990
+ 403: {
25136
25991
  headers: {
25137
25992
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25138
25993
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25155,11 +26010,8 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25155
26010
  };
25156
26011
  };
25157
26012
  }, `${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<{
26013
+ /** Durably reserve canonical catalog-backed inventory intent. */
26014
+ reserveCatalogBatch: (body: CatalogInventoryBatchReserveRequest) => Promise<openapi_fetch.FetchResponse<{
25163
26015
  parameters: {
25164
26016
  query?: never;
25165
26017
  header?: never;
@@ -25168,7 +26020,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25168
26020
  };
25169
26021
  requestBody?: {
25170
26022
  content: {
25171
- "application/json": components["schemas"]["ManualInventoryBatchReserveRequest"];
26023
+ "application/json": components["schemas"]["CatalogInventoryBatchReserveRequest"];
25172
26024
  };
25173
26025
  };
25174
26026
  responses: {
@@ -25183,7 +26035,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25183
26035
  [name: string]: unknown;
25184
26036
  };
25185
26037
  content: {
25186
- "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
26038
+ "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
25187
26039
  };
25188
26040
  };
25189
26041
  400: {
@@ -25279,11 +26131,11 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25279
26131
  purchaseDate?: string;
25280
26132
  taxShipTotal?: number;
25281
26133
  notes?: string;
25282
- items: components["schemas"]["ManualInventoryBatchItem"][];
26134
+ items: components["schemas"]["CatalogInventoryBatchItem"][];
25283
26135
  };
25284
26136
  }, `${string}/${string}`>>;
25285
- /** Commit a reserved batch by UUID with no request body. */
25286
- commitManualBatch: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
26137
+ /** Atomically commit a reserved catalog batch by UUID, with no body. */
26138
+ commitCatalogBatch: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
25287
26139
  parameters: {
25288
26140
  query?: never;
25289
26141
  header?: never;
@@ -25305,7 +26157,21 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25305
26157
  [name: string]: unknown;
25306
26158
  };
25307
26159
  content: {
25308
- "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
26160
+ "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
26161
+ };
26162
+ };
26163
+ 400: {
26164
+ headers: {
26165
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26166
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26167
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26168
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26169
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26170
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26171
+ [name: string]: unknown;
26172
+ };
26173
+ content: {
26174
+ "application/json": components["schemas"]["ErrorResponse"];
25309
26175
  };
25310
26176
  };
25311
26177
  401: {
@@ -25388,12 +26254,8 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25388
26254
  };
25389
26255
  };
25390
26256
  }, `${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<{
26257
+ /** Recover the owner-scoped lifecycle; missing batches remain unknown. */
26258
+ getCatalogBatchStatus: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
25397
26259
  parameters: {
25398
26260
  query?: never;
25399
26261
  header?: never;
@@ -25415,7 +26277,21 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25415
26277
  [name: string]: unknown;
25416
26278
  };
25417
26279
  content: {
25418
- "application/json": components["schemas"]["ManualInventoryBatchLifecycleResponse"];
26280
+ "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
26281
+ };
26282
+ };
26283
+ 400: {
26284
+ headers: {
26285
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26286
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26287
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26288
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26289
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26290
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26291
+ [name: string]: unknown;
26292
+ };
26293
+ content: {
26294
+ "application/json": components["schemas"]["ErrorResponse"];
25419
26295
  };
25420
26296
  };
25421
26297
  401: {
@@ -25447,6 +26323,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25447
26323
  };
25448
26324
  };
25449
26325
  429: components["responses"]["ApiRateLimitExceeded"];
26326
+ 503: {
26327
+ headers: {
26328
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26329
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26330
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26331
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26332
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26333
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26334
+ [name: string]: unknown;
26335
+ };
26336
+ content: {
26337
+ "application/json": components["schemas"]["ErrorResponse"];
26338
+ };
26339
+ };
25450
26340
  };
25451
26341
  }, {
25452
26342
  params: {
@@ -25455,21 +26345,30 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25455
26345
  };
25456
26346
  };
25457
26347
  }, `${string}/${string}`>>;
25458
- /** Durably reserve canonical catalog-backed inventory intent. */
25459
- reserveCatalogBatch: (body: CatalogInventoryBatchReserveRequest) => Promise<openapi_fetch.FetchResponse<{
26348
+ /**
26349
+ * Update one of the caller's own inventory rows. Pass `ifMatch` (the
26350
+ * row's `last_updated`) to enable optimistic concurrency (409 on mismatch).
26351
+ */
26352
+ update: (id: number, body: InventoryUpdateRequest, options?: {
26353
+ ifMatch?: string;
26354
+ }) => Promise<openapi_fetch.FetchResponse<{
25460
26355
  parameters: {
25461
26356
  query?: never;
25462
- header?: never;
25463
- path?: never;
26357
+ header?: {
26358
+ "if-match"?: string;
26359
+ };
26360
+ path: {
26361
+ id: number;
26362
+ };
25464
26363
  cookie?: never;
25465
26364
  };
25466
26365
  requestBody?: {
25467
26366
  content: {
25468
- "application/json": components["schemas"]["CatalogInventoryBatchReserveRequest"];
26367
+ "application/json": components["schemas"]["InventoryUpdateRequest"];
25469
26368
  };
25470
26369
  };
25471
26370
  responses: {
25472
- 201: {
26371
+ 200: {
25473
26372
  headers: {
25474
26373
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25475
26374
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25480,7 +26379,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25480
26379
  [name: string]: unknown;
25481
26380
  };
25482
26381
  content: {
25483
- "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
26382
+ "application/json": components["schemas"]["InventoryItemResponse"];
25484
26383
  };
25485
26384
  };
25486
26385
  400: {
@@ -25525,6 +26424,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25525
26424
  "application/json": components["schemas"]["ErrorResponse"];
25526
26425
  };
25527
26426
  };
26427
+ 404: {
26428
+ headers: {
26429
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26430
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26431
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26432
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26433
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26434
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26435
+ [name: string]: unknown;
26436
+ };
26437
+ content: {
26438
+ "application/json": components["schemas"]["ErrorResponse"];
26439
+ };
26440
+ };
25528
26441
  409: {
25529
26442
  headers: {
25530
26443
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -25571,21 +26484,37 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25571
26484
  };
25572
26485
  };
25573
26486
  }, {
26487
+ params: {
26488
+ path: {
26489
+ id: number;
26490
+ };
26491
+ header: {
26492
+ "if-match": string;
26493
+ } | undefined;
26494
+ };
25574
26495
  body: {
25575
- batchId: string;
26496
+ qty?: number;
25576
26497
  purchaseDate?: string;
25577
- taxShipTotal?: number;
25578
- notes?: string;
25579
- items: components["schemas"]["CatalogInventoryBatchItem"][];
26498
+ cost?: number | null;
26499
+ taxShip?: number | null;
26500
+ notes?: string | null;
26501
+ stocked?: boolean;
26502
+ rank?: number | null;
26503
+ cuppingNotes?: string | number | boolean | unknown[] | {
26504
+ [key: string]: unknown;
26505
+ } | null;
25580
26506
  };
25581
26507
  }, `${string}/${string}`>>;
25582
- /** Atomically commit a reserved catalog batch by UUID, with no body. */
25583
- commitCatalogBatch: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
26508
+ /**
26509
+ * Delete one of the caller's own inventory rows. Returns 409 if dependent
26510
+ * roast profiles or sales exist (no force-cascade).
26511
+ */
26512
+ delete: (id: number) => Promise<openapi_fetch.FetchResponse<{
25584
26513
  parameters: {
25585
26514
  query?: never;
25586
26515
  header?: never;
25587
26516
  path: {
25588
- batchId: string;
26517
+ id: number;
25589
26518
  };
25590
26519
  cookie?: never;
25591
26520
  };
@@ -25602,7 +26531,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25602
26531
  [name: string]: unknown;
25603
26532
  };
25604
26533
  content: {
25605
- "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
26534
+ "application/json": components["schemas"]["InventoryDeleteResponse"];
25606
26535
  };
25607
26536
  };
25608
26537
  400: {
@@ -25661,6 +26590,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25661
26590
  "application/json": components["schemas"]["ErrorResponse"];
25662
26591
  };
25663
26592
  };
26593
+ 409: {
26594
+ headers: {
26595
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26596
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26597
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26598
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26599
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26600
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26601
+ [name: string]: unknown;
26602
+ };
26603
+ content: {
26604
+ "application/json": components["schemas"]["ErrorResponse"];
26605
+ };
26606
+ };
25664
26607
  429: {
25665
26608
  headers: {
25666
26609
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -25695,21 +26638,25 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25695
26638
  }, {
25696
26639
  params: {
25697
26640
  path: {
25698
- batchId: string;
26641
+ id: number;
25699
26642
  };
25700
26643
  };
25701
26644
  }, `${string}/${string}`>>;
25702
- /** Recover the owner-scoped lifecycle; missing batches remain unknown. */
25703
- getCatalogBatchStatus: (batchId: string) => Promise<openapi_fetch.FetchResponse<{
26645
+ };
26646
+ roasts: {
26647
+ /** Match Artisan roast metadata to one of the supplied inventory rows. */
26648
+ classify: (body: RoastClassificationRequest) => Promise<openapi_fetch.FetchResponse<{
25704
26649
  parameters: {
25705
26650
  query?: never;
25706
26651
  header?: never;
25707
- path: {
25708
- batchId: string;
25709
- };
26652
+ path?: never;
25710
26653
  cookie?: never;
25711
26654
  };
25712
- requestBody?: never;
26655
+ requestBody: {
26656
+ content: {
26657
+ "application/json": components["schemas"]["RoastClassificationRequest"];
26658
+ };
26659
+ };
25713
26660
  responses: {
25714
26661
  200: {
25715
26662
  headers: {
@@ -25722,7 +26669,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25722
26669
  [name: string]: unknown;
25723
26670
  };
25724
26671
  content: {
25725
- "application/json": components["schemas"]["CatalogInventoryBatchLifecycleResponse"];
26672
+ "application/json": components["schemas"]["RoastClassificationResponse"];
25726
26673
  };
25727
26674
  };
25728
26675
  400: {
@@ -25767,7 +26714,22 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25767
26714
  "application/json": components["schemas"]["ErrorResponse"];
25768
26715
  };
25769
26716
  };
25770
- 429: components["responses"]["ApiRateLimitExceeded"];
26717
+ 429: {
26718
+ headers: {
26719
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26720
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26721
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26722
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26723
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26724
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26725
+ "Retry-After": components["headers"]["Retry-After"];
26726
+ "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
26727
+ [name: string]: unknown;
26728
+ };
26729
+ content: {
26730
+ "application/json": components["schemas"]["ErrorResponse"];
26731
+ };
26732
+ };
25771
26733
  503: {
25772
26734
  headers: {
25773
26735
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -25784,34 +26746,54 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25784
26746
  };
25785
26747
  };
25786
26748
  }, {
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;
26749
+ body: {
26750
+ alogMetadata: {
26751
+ title: string;
26752
+ filename?: string;
26753
+ roastertype?: string;
26754
+ beans?: string;
26755
+ roastingnotes?: string;
26756
+ weight?: [number, number, string];
25804
26757
  };
25805
- path: {
26758
+ inventory: {
25806
26759
  id: number;
26760
+ coffee_name: string;
26761
+ origin?: string;
26762
+ processing?: string;
26763
+ }[];
26764
+ } | {
26765
+ artisanSource: {
26766
+ fileName: string;
26767
+ fileContent: string;
25807
26768
  };
25808
- cookie?: never;
26769
+ inventory: {
26770
+ id: number;
26771
+ coffee_name: string;
26772
+ origin?: string;
26773
+ processing?: string;
26774
+ }[];
25809
26775
  };
25810
- requestBody?: {
25811
- content: {
25812
- "application/json": components["schemas"]["InventoryUpdateRequest"];
26776
+ }, `${string}/${string}`>>;
26777
+ /** List the caller's own roast profiles (owner-scoped). */
26778
+ list: (query?: RoastListQuery) => Promise<openapi_fetch.FetchResponse<{
26779
+ parameters: {
26780
+ query?: {
26781
+ coffee_id?: number;
26782
+ roast_id?: number;
26783
+ batch_name?: string;
26784
+ coffee_name?: string;
26785
+ date_start?: string;
26786
+ date_end?: string;
26787
+ stocked_only?: boolean | null;
26788
+ catalog_id?: number;
26789
+ limit?: number;
26790
+ offset?: number | null;
25813
26791
  };
26792
+ header?: never;
26793
+ path?: never;
26794
+ cookie?: never;
25814
26795
  };
26796
+ requestBody?: never;
25815
26797
  responses: {
25816
26798
  200: {
25817
26799
  headers: {
@@ -25824,7 +26806,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25824
26806
  [name: string]: unknown;
25825
26807
  };
25826
26808
  content: {
25827
- "application/json": components["schemas"]["InventoryItemResponse"];
26809
+ "application/json": components["schemas"]["RoastListResponse"];
25828
26810
  };
25829
26811
  };
25830
26812
  400: {
@@ -25869,7 +26851,57 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25869
26851
  "application/json": components["schemas"]["ErrorResponse"];
25870
26852
  };
25871
26853
  };
25872
- 404: {
26854
+ 429: components["responses"]["ApiRateLimitExceeded"];
26855
+ };
26856
+ }, {
26857
+ params: {
26858
+ query: {
26859
+ coffee_id?: number;
26860
+ roast_id?: number;
26861
+ batch_name?: string;
26862
+ coffee_name?: string;
26863
+ date_start?: string;
26864
+ date_end?: string;
26865
+ stocked_only?: boolean | null;
26866
+ catalog_id?: number;
26867
+ limit?: number;
26868
+ offset?: number | null;
26869
+ } | undefined;
26870
+ };
26871
+ }, `${string}/${string}`>>;
26872
+ /**
26873
+ * Fetch one of the caller's roast profiles by id, optionally with its
26874
+ * temperature curve (`includeTemps`) and event markers (`includeEvents`).
26875
+ */
26876
+ get: (id: string, query?: RoastGetQuery) => Promise<openapi_fetch.FetchResponse<{
26877
+ parameters: {
26878
+ query?: {
26879
+ includeTemps?: boolean | null;
26880
+ includeEvents?: boolean | null;
26881
+ };
26882
+ header?: never;
26883
+ path: {
26884
+ id: string;
26885
+ };
26886
+ cookie?: never;
26887
+ };
26888
+ requestBody?: never;
26889
+ responses: {
26890
+ 200: {
26891
+ headers: {
26892
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26893
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
26894
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
26895
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26896
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26897
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
26898
+ [name: string]: unknown;
26899
+ };
26900
+ content: {
26901
+ "application/json": components["schemas"]["RoastGetResponse"];
26902
+ };
26903
+ };
26904
+ 400: {
25873
26905
  headers: {
25874
26906
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25875
26907
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25883,7 +26915,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25883
26915
  "application/json": components["schemas"]["ErrorResponse"];
25884
26916
  };
25885
26917
  };
25886
- 409: {
26918
+ 401: {
25887
26919
  headers: {
25888
26920
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25889
26921
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25897,7 +26929,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25897
26929
  "application/json": components["schemas"]["ErrorResponse"];
25898
26930
  };
25899
26931
  };
25900
- 429: {
26932
+ 403: {
25901
26933
  headers: {
25902
26934
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25903
26935
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25905,15 +26937,13 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25905
26937
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
25906
26938
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
25907
26939
  "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
26940
  [name: string]: unknown;
25911
26941
  };
25912
26942
  content: {
25913
26943
  "application/json": components["schemas"]["ErrorResponse"];
25914
26944
  };
25915
26945
  };
25916
- 503: {
26946
+ 404: {
25917
26947
  headers: {
25918
26948
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
25919
26949
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -25927,39 +26957,28 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25927
26957
  "application/json": components["schemas"]["ErrorResponse"];
25928
26958
  };
25929
26959
  };
26960
+ 429: components["responses"]["ApiRateLimitExceeded"];
25930
26961
  };
25931
26962
  }, {
25932
26963
  params: {
25933
26964
  path: {
25934
- id: number;
26965
+ id: string;
25935
26966
  };
25936
- header: {
25937
- "if-match": string;
26967
+ query: {
26968
+ includeTemps?: boolean | null;
26969
+ includeEvents?: boolean | null;
25938
26970
  } | undefined;
25939
26971
  };
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
26972
  }, `${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<{
26973
+ /** Fetch an owner roast's adaptively sampled chart curve and metadata. */
26974
+ chartData: (id: string, query?: RoastChartDataQuery) => Promise<openapi_fetch.FetchResponse<{
25958
26975
  parameters: {
25959
- query?: never;
26976
+ query?: {
26977
+ target_points?: number;
26978
+ };
25960
26979
  header?: never;
25961
26980
  path: {
25962
- id: number;
26981
+ id: string;
25963
26982
  };
25964
26983
  cookie?: never;
25965
26984
  };
@@ -25976,7 +26995,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
25976
26995
  [name: string]: unknown;
25977
26996
  };
25978
26997
  content: {
25979
- "application/json": components["schemas"]["InventoryDeleteResponse"];
26998
+ "application/json": components["schemas"]["RoastChartDataResponse"];
25980
26999
  };
25981
27000
  };
25982
27001
  400: {
@@ -26035,75 +27054,42 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26035
27054
  "application/json": components["schemas"]["ErrorResponse"];
26036
27055
  };
26037
27056
  };
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
- };
27057
+ 429: components["responses"]["ApiRateLimitExceeded"];
26082
27058
  };
26083
27059
  }, {
26084
27060
  params: {
26085
27061
  path: {
26086
- id: number;
27062
+ id: string;
26087
27063
  };
27064
+ query: {
27065
+ target_points?: number;
27066
+ } | undefined;
26088
27067
  };
26089
27068
  }, `${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<{
27069
+ /**
27070
+ * Create an owner roast profile, optionally with nested temperature/event
27071
+ * rows. Requires a session or an owner-bound API key carrying the exact
27072
+ * `roast:write` scope. The optional `idempotencyKey` is payload-bound:
27073
+ * same-key, same-payload retries replay, while changed payloads conflict.
27074
+ */
27075
+ create: (body: RoastCreateRequest, options?: {
27076
+ idempotencyKey?: string;
27077
+ }) => Promise<openapi_fetch.FetchResponse<{
26094
27078
  parameters: {
26095
27079
  query?: never;
26096
- header?: never;
27080
+ header?: {
27081
+ "idempotency-key"?: string;
27082
+ };
26097
27083
  path?: never;
26098
27084
  cookie?: never;
26099
27085
  };
26100
27086
  requestBody: {
26101
27087
  content: {
26102
- "application/json": components["schemas"]["RoastClassificationRequest"];
27088
+ "application/json": components["schemas"]["RoastCreateRequest"];
26103
27089
  };
26104
27090
  };
26105
27091
  responses: {
26106
- 200: {
27092
+ 201: {
26107
27093
  headers: {
26108
27094
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26109
27095
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26114,7 +27100,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26114
27100
  [name: string]: unknown;
26115
27101
  };
26116
27102
  content: {
26117
- "application/json": components["schemas"]["RoastClassificationResponse"];
27103
+ "application/json": components["schemas"]["RoastDetailResponse"];
26118
27104
  };
26119
27105
  };
26120
27106
  400: {
@@ -26159,23 +27145,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26159
27145
  "application/json": components["schemas"]["ErrorResponse"];
26160
27146
  };
26161
27147
  };
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: {
27148
+ 404: {
26179
27149
  headers: {
26180
27150
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26181
27151
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26189,72 +27159,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26189
27159
  "application/json": components["schemas"]["ErrorResponse"];
26190
27160
  };
26191
27161
  };
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: {
27162
+ 409: {
26258
27163
  headers: {
26259
27164
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26260
27165
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26268,7 +27173,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26268
27173
  "application/json": components["schemas"]["ErrorResponse"];
26269
27174
  };
26270
27175
  };
26271
- 401: {
27176
+ 429: {
26272
27177
  headers: {
26273
27178
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26274
27179
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26276,13 +27181,15 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26276
27181
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26277
27182
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26278
27183
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27184
+ "Retry-After": components["headers"]["Retry-After"];
27185
+ "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
26279
27186
  [name: string]: unknown;
26280
27187
  };
26281
27188
  content: {
26282
27189
  "application/json": components["schemas"]["ErrorResponse"];
26283
27190
  };
26284
27191
  };
26285
- 403: {
27192
+ 503: {
26286
27193
  headers: {
26287
27194
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26288
27195
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26296,43 +27203,72 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26296
27203
  "application/json": components["schemas"]["ErrorResponse"];
26297
27204
  };
26298
27205
  };
26299
- 429: components["responses"]["ApiRateLimitExceeded"];
26300
27206
  };
26301
27207
  }, {
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;
27208
+ body: {
27209
+ coffeeId: number;
27210
+ coffeeName?: string;
27211
+ batchName?: string;
27212
+ roastDate?: string;
27213
+ ozIn?: number;
27214
+ ozOut?: number;
27215
+ weightLossPercent?: number;
27216
+ notes?: string;
27217
+ targets?: string;
27218
+ roasterType?: string;
27219
+ roasterSize?: string;
27220
+ temperatureUnit?: "F" | "C";
27221
+ totalRoastTime?: number;
27222
+ developmentPercent?: number;
27223
+ dataSource?: string;
27224
+ roastUuid?: string;
27225
+ fcStartTime?: number;
27226
+ fcStartTemp?: number;
27227
+ fcEndTime?: number;
27228
+ fcEndTemp?: number;
27229
+ dropTime?: number;
27230
+ dropTemp?: number;
27231
+ chargeTemp?: number;
27232
+ chargeTime?: number;
27233
+ tpTime?: number;
27234
+ tpTemp?: number;
27235
+ totalRor?: number;
27236
+ dryPercent?: number;
27237
+ maillardPercent?: number;
27238
+ auc?: number;
27239
+ dryPhaseRor?: number;
27240
+ midPhaseRor?: number;
27241
+ finishPhaseRor?: number;
27242
+ dryPhaseDeltaTemp?: number;
27243
+ temperatures?: components["schemas"]["RoastTemperatureInput"][];
27244
+ events?: components["schemas"]["RoastEventInput"][];
26315
27245
  };
27246
+ params: {
27247
+ header: {
27248
+ "idempotency-key": string;
27249
+ };
27250
+ } | undefined;
26316
27251
  }, `${string}/${string}`>>;
26317
27252
  /**
26318
- * Fetch one of the caller's roast profiles by id, optionally with its
26319
- * temperature curve (`includeTemps`) and event markers (`includeEvents`).
27253
+ * Create every profile in one named batch atomically. The required
27254
+ * payload-bound idempotency key makes transport retries safe.
26320
27255
  */
26321
- get: (id: string, query?: RoastGetQuery) => Promise<openapi_fetch.FetchResponse<{
27256
+ createBatch: (body: RoastBatchCreateRequest, idempotencyKey: string) => Promise<openapi_fetch.FetchResponse<{
26322
27257
  parameters: {
26323
- query?: {
26324
- includeTemps?: boolean | null;
26325
- includeEvents?: boolean | null;
26326
- };
26327
- header?: never;
26328
- path: {
26329
- id: string;
27258
+ query?: never;
27259
+ header: {
27260
+ "idempotency-key": string;
26330
27261
  };
27262
+ path?: never;
26331
27263
  cookie?: never;
26332
27264
  };
26333
- requestBody?: never;
27265
+ requestBody: {
27266
+ content: {
27267
+ "application/json": components["schemas"]["RoastBatchCreateRequest"];
27268
+ };
27269
+ };
26334
27270
  responses: {
26335
- 200: {
27271
+ 201: {
26336
27272
  headers: {
26337
27273
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26338
27274
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26343,7 +27279,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26343
27279
  [name: string]: unknown;
26344
27280
  };
26345
27281
  content: {
26346
- "application/json": components["schemas"]["RoastGetResponse"];
27282
+ "application/json": components["schemas"]["RoastBatchMutationResponse"];
26347
27283
  };
26348
27284
  };
26349
27285
  400: {
@@ -26402,62 +27338,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26402
27338
  "application/json": components["schemas"]["ErrorResponse"];
26403
27339
  };
26404
27340
  };
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: {
27341
+ 409: {
26461
27342
  headers: {
26462
27343
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26463
27344
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26471,7 +27352,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26471
27352
  "application/json": components["schemas"]["ErrorResponse"];
26472
27353
  };
26473
27354
  };
26474
- 403: {
27355
+ 429: {
26475
27356
  headers: {
26476
27357
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26477
27358
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26479,13 +27360,15 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26479
27360
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
26480
27361
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
26481
27362
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27363
+ "Retry-After": components["headers"]["Retry-After"];
27364
+ "X-RateLimit-Blocked-By": components["headers"]["X-RateLimit-Blocked-By"];
26482
27365
  [name: string]: unknown;
26483
27366
  };
26484
27367
  content: {
26485
27368
  "application/json": components["schemas"]["ErrorResponse"];
26486
27369
  };
26487
27370
  };
26488
- 404: {
27371
+ 503: {
26489
27372
  headers: {
26490
27373
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26491
27374
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26499,42 +27382,45 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26499
27382
  "application/json": components["schemas"]["ErrorResponse"];
26500
27383
  };
26501
27384
  };
26502
- 429: components["responses"]["ApiRateLimitExceeded"];
26503
27385
  };
26504
27386
  }, {
27387
+ body: {
27388
+ batchName: string;
27389
+ roastDate?: string;
27390
+ notes?: string;
27391
+ targets?: string;
27392
+ items: components["schemas"]["RoastBatchItem"][];
27393
+ };
26505
27394
  params: {
26506
- path: {
26507
- id: string;
27395
+ header: {
27396
+ "idempotency-key": string;
26508
27397
  };
26509
- query: {
26510
- target_points?: number;
26511
- } | undefined;
26512
27398
  };
26513
27399
  }, `${string}/${string}`>>;
26514
27400
  /**
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.
27401
+ * Update one of the caller's own roast profiles. Pass `ifMatch` (the
27402
+ * row's `last_updated`) to enable optimistic concurrency (409 on mismatch).
26519
27403
  */
26520
- create: (body: RoastCreateRequest, options?: {
26521
- idempotencyKey?: string;
27404
+ update: (id: number, body: RoastUpdateRequest, options?: {
27405
+ ifMatch?: string;
26522
27406
  }) => Promise<openapi_fetch.FetchResponse<{
26523
27407
  parameters: {
26524
27408
  query?: never;
26525
27409
  header?: {
26526
- "idempotency-key"?: string;
27410
+ "if-match"?: string;
27411
+ };
27412
+ path: {
27413
+ id: number;
26527
27414
  };
26528
- path?: never;
26529
27415
  cookie?: never;
26530
27416
  };
26531
27417
  requestBody: {
26532
27418
  content: {
26533
- "application/json": components["schemas"]["RoastCreateRequest"];
27419
+ "application/json": components["schemas"]["RoastUpdateRequest"];
26534
27420
  };
26535
27421
  };
26536
27422
  responses: {
26537
- 201: {
27423
+ 200: {
26538
27424
  headers: {
26539
27425
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26540
27426
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26650,16 +27536,23 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26650
27536
  };
26651
27537
  };
26652
27538
  }, {
27539
+ params: {
27540
+ path: {
27541
+ id: number;
27542
+ };
27543
+ header: {
27544
+ "if-match": string;
27545
+ } | undefined;
27546
+ };
26653
27547
  body: {
26654
- coffeeId: number;
26655
27548
  coffeeName?: string;
26656
27549
  batchName?: string;
26657
27550
  roastDate?: string;
26658
- ozIn?: number;
26659
- ozOut?: number;
27551
+ ozIn?: number | null;
27552
+ ozOut?: number | null;
26660
27553
  weightLossPercent?: number;
26661
- notes?: string;
26662
- targets?: string;
27554
+ notes?: string | null;
27555
+ targets?: string | null;
26663
27556
  roasterType?: string;
26664
27557
  roasterSize?: string;
26665
27558
  temperatureUnit?: "F" | "C";
@@ -26688,32 +27581,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26688
27581
  temperatures?: components["schemas"]["RoastTemperatureInput"][];
26689
27582
  events?: components["schemas"]["RoastEventInput"][];
26690
27583
  };
26691
- params: {
26692
- header: {
26693
- "idempotency-key": string;
26694
- };
26695
- } | undefined;
26696
27584
  }, `${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<{
27585
+ /** Delete one of the caller's own roast profiles. */
27586
+ delete: (id: number) => Promise<openapi_fetch.FetchResponse<{
26702
27587
  parameters: {
26703
27588
  query?: never;
26704
- header: {
26705
- "idempotency-key": string;
27589
+ header?: never;
27590
+ path: {
27591
+ id: number;
26706
27592
  };
26707
- path?: never;
26708
27593
  cookie?: never;
26709
27594
  };
26710
- requestBody: {
26711
- content: {
26712
- "application/json": components["schemas"]["RoastBatchCreateRequest"];
26713
- };
26714
- };
27595
+ requestBody?: never;
26715
27596
  responses: {
26716
- 201: {
27597
+ 200: {
26717
27598
  headers: {
26718
27599
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
26719
27600
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -26724,7 +27605,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26724
27605
  [name: string]: unknown;
26725
27606
  };
26726
27607
  content: {
26727
- "application/json": components["schemas"]["RoastBatchMutationResponse"];
27608
+ "application/json": components["schemas"]["RoastDeleteResponse"];
26728
27609
  };
26729
27610
  };
26730
27611
  400: {
@@ -26783,20 +27664,6 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26783
27664
  "application/json": components["schemas"]["ErrorResponse"];
26784
27665
  };
26785
27666
  };
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
27667
  429: {
26801
27668
  headers: {
26802
27669
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -26826,44 +27693,26 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26826
27693
  content: {
26827
27694
  "application/json": components["schemas"]["ErrorResponse"];
26828
27695
  };
26829
- };
26830
- };
26831
- }, {
26832
- body: {
26833
- batchName: string;
26834
- roastDate?: string;
26835
- notes?: string;
26836
- targets?: string;
26837
- items: components["schemas"]["RoastBatchItem"][];
27696
+ };
26838
27697
  };
27698
+ }, {
26839
27699
  params: {
26840
- header: {
26841
- "idempotency-key": string;
27700
+ path: {
27701
+ id: number;
26842
27702
  };
26843
27703
  };
26844
27704
  }, `${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<{
27705
+ /** Delete every owner roast carrying one exact batch name. Session-only. */
27706
+ deleteBatch: (batchName: string) => Promise<openapi_fetch.FetchResponse<{
26852
27707
  parameters: {
26853
27708
  query?: never;
26854
- header?: {
26855
- "if-match"?: string;
26856
- };
27709
+ header?: never;
26857
27710
  path: {
26858
- id: number;
27711
+ batchName: string;
26859
27712
  };
26860
27713
  cookie?: never;
26861
27714
  };
26862
- requestBody: {
26863
- content: {
26864
- "application/json": components["schemas"]["RoastUpdateRequest"];
26865
- };
26866
- };
27715
+ requestBody?: never;
26867
27716
  responses: {
26868
27717
  200: {
26869
27718
  headers: {
@@ -26876,7 +27725,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26876
27725
  [name: string]: unknown;
26877
27726
  };
26878
27727
  content: {
26879
- "application/json": components["schemas"]["RoastDetailResponse"];
27728
+ "application/json": components["schemas"]["RoastBatchDeleteResponse"];
26880
27729
  };
26881
27730
  };
26882
27731
  400: {
@@ -26935,20 +27784,6 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26935
27784
  "application/json": components["schemas"]["ErrorResponse"];
26936
27785
  };
26937
27786
  };
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
27787
  429: {
26953
27788
  headers: {
26954
27789
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -26983,61 +27818,32 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
26983
27818
  }, {
26984
27819
  params: {
26985
27820
  path: {
26986
- id: number;
27821
+ batchName: string;
26987
27822
  };
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
27823
  };
27029
27824
  }, `${string}/${string}`>>;
27030
- /** Delete one of the caller's own roast profiles. */
27031
- delete: (id: number) => Promise<openapi_fetch.FetchResponse<{
27825
+ /**
27826
+ * Replace live temperature samples and all event markers atomically,
27827
+ * while preserving non-live temperatures and deriving milestone fields.
27828
+ */
27829
+ replaceLiveCurve: (id: number, body: RoastLiveCurveRequest, options?: {
27830
+ ifMatch?: string;
27831
+ }) => Promise<openapi_fetch.FetchResponse<{
27032
27832
  parameters: {
27033
27833
  query?: never;
27034
- header?: never;
27834
+ header?: {
27835
+ "if-match"?: string;
27836
+ };
27035
27837
  path: {
27036
27838
  id: number;
27037
27839
  };
27038
27840
  cookie?: never;
27039
27841
  };
27040
- requestBody?: never;
27842
+ requestBody: {
27843
+ content: {
27844
+ "application/json": components["schemas"]["RoastLiveCurveRequest"];
27845
+ };
27846
+ };
27041
27847
  responses: {
27042
27848
  200: {
27043
27849
  headers: {
@@ -27050,7 +27856,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27050
27856
  [name: string]: unknown;
27051
27857
  };
27052
27858
  content: {
27053
- "application/json": components["schemas"]["RoastDeleteResponse"];
27859
+ "application/json": components["schemas"]["RoastDetailResponse"];
27054
27860
  };
27055
27861
  };
27056
27862
  400: {
@@ -27109,6 +27915,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27109
27915
  "application/json": components["schemas"]["ErrorResponse"];
27110
27916
  };
27111
27917
  };
27918
+ 409: {
27919
+ headers: {
27920
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27921
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
27922
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27923
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27924
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27925
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
27926
+ [name: string]: unknown;
27927
+ };
27928
+ content: {
27929
+ "application/json": components["schemas"]["ErrorResponse"];
27930
+ };
27931
+ };
27112
27932
  429: {
27113
27933
  headers: {
27114
27934
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -27145,21 +27965,41 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27145
27965
  path: {
27146
27966
  id: number;
27147
27967
  };
27968
+ header: {
27969
+ "if-match": string;
27970
+ } | undefined;
27971
+ };
27972
+ body: {
27973
+ temperatures: components["schemas"]["RoastTemperatureInput"][];
27974
+ events: components["schemas"]["RoastEventInput"][];
27148
27975
  };
27149
27976
  }, `${string}/${string}`>>;
27150
- /** Delete every owner roast carrying one exact batch name. Session-only. */
27151
- deleteBatch: (batchName: string) => Promise<openapi_fetch.FetchResponse<{
27977
+ /**
27978
+ * Create a roast profile from an Artisan `.alog` file against one of the
27979
+ * caller's green-coffee lots, persisting the imported curve, events, and
27980
+ * an artisan_import_log entry atomically. Requires a session or an
27981
+ * owner-bound API key carrying the exact `roast:write` scope. The
27982
+ * optional `idempotencyKey` is payload-bound: same-key, same-payload
27983
+ * retries replay, while changed payloads conflict.
27984
+ */
27985
+ import: (body: RoastImportRequest, options?: {
27986
+ idempotencyKey?: string;
27987
+ }) => Promise<openapi_fetch.FetchResponse<{
27152
27988
  parameters: {
27153
27989
  query?: never;
27154
- header?: never;
27155
- path: {
27156
- batchName: string;
27990
+ header?: {
27991
+ "idempotency-key"?: string;
27157
27992
  };
27993
+ path?: never;
27158
27994
  cookie?: never;
27159
27995
  };
27160
- requestBody?: never;
27996
+ requestBody: {
27997
+ content: {
27998
+ "application/json": components["schemas"]["RoastImportCreateRequest"];
27999
+ };
28000
+ };
27161
28001
  responses: {
27162
- 200: {
28002
+ 201: {
27163
28003
  headers: {
27164
28004
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27165
28005
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27170,7 +28010,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27170
28010
  [name: string]: unknown;
27171
28011
  };
27172
28012
  content: {
27173
- "application/json": components["schemas"]["RoastBatchDeleteResponse"];
28013
+ "application/json": components["schemas"]["RoastImportResponse"];
27174
28014
  };
27175
28015
  };
27176
28016
  400: {
@@ -27229,6 +28069,20 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27229
28069
  "application/json": components["schemas"]["ErrorResponse"];
27230
28070
  };
27231
28071
  };
28072
+ 409: {
28073
+ headers: {
28074
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28075
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28076
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28077
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28078
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28079
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28080
+ [name: string]: unknown;
28081
+ };
28082
+ content: {
28083
+ "application/json": components["schemas"]["ErrorResponse"];
28084
+ };
28085
+ };
27232
28086
  429: {
27233
28087
  headers: {
27234
28088
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
@@ -27261,17 +28115,29 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27261
28115
  };
27262
28116
  };
27263
28117
  }, {
28118
+ body: {
28119
+ fileName: string;
28120
+ fileContent: string;
28121
+ coffeeId: number;
28122
+ batchName?: string;
28123
+ ozIn?: number;
28124
+ roastNotes?: string;
28125
+ roastTargets?: string;
28126
+ fileSize?: number;
28127
+ };
27264
28128
  params: {
27265
- path: {
27266
- batchName: string;
28129
+ header: {
28130
+ "idempotency-key": string;
27267
28131
  };
27268
- };
28132
+ } | undefined;
27269
28133
  }, `${string}/${string}`>>;
27270
28134
  /**
27271
- * Replace live temperature samples and all event markers atomically,
27272
- * while preserving non-live temperatures and deriving milestone fields.
28135
+ * Replace the Artisan import data on one of the caller's existing roasts,
28136
+ * re-deriving its curve, events, and computed metrics while preserving the
28137
+ * roast's identity. Pass `ifMatch` (the roast's `last_updated`) to enable
28138
+ * optimistic concurrency (409 on mismatch).
27273
28139
  */
27274
- replaceLiveCurve: (id: number, body: RoastLiveCurveRequest, options?: {
28140
+ replaceArtisanImport: (id: number, body: RoastArtisanImportReplaceRequest, options?: {
27275
28141
  ifMatch?: string;
27276
28142
  }) => Promise<openapi_fetch.FetchResponse<{
27277
28143
  parameters: {
@@ -27286,7 +28152,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27286
28152
  };
27287
28153
  requestBody: {
27288
28154
  content: {
27289
- "application/json": components["schemas"]["RoastLiveCurveRequest"];
28155
+ "application/json": components["schemas"]["RoastArtisanImportReplaceRequest"];
27290
28156
  };
27291
28157
  };
27292
28158
  responses: {
@@ -27301,7 +28167,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27301
28167
  [name: string]: unknown;
27302
28168
  };
27303
28169
  content: {
27304
- "application/json": components["schemas"]["RoastDetailResponse"];
28170
+ "application/json": components["schemas"]["RoastImportResponse"];
27305
28171
  };
27306
28172
  };
27307
28173
  400: {
@@ -27415,64 +28281,27 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27415
28281
  } | undefined;
27416
28282
  };
27417
28283
  body: {
27418
- temperatures: components["schemas"]["RoastTemperatureInput"][];
27419
- events: components["schemas"]["RoastEventInput"][];
28284
+ fileName: string;
28285
+ fileContent: string;
28286
+ fileSize?: number;
27420
28287
  };
27421
28288
  }, `${string}/${string}`>>;
27422
28289
  /**
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.
28290
+ * Clear import-derived curve, events, metrics, and provenance data from
28291
+ * one of the caller's existing roasts without deleting the roast profile.
27429
28292
  */
27430
- import: (body: RoastImportRequest, options?: {
27431
- idempotencyKey?: string;
27432
- }) => Promise<openapi_fetch.FetchResponse<{
28293
+ clearArtisanImport: (id: number) => Promise<openapi_fetch.FetchResponse<{
27433
28294
  parameters: {
27434
28295
  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
- };
28296
+ header?: never;
28297
+ path: {
28298
+ id: number;
27474
28299
  };
27475
- 401: {
28300
+ cookie?: never;
28301
+ };
28302
+ requestBody?: never;
28303
+ responses: {
28304
+ 200: {
27476
28305
  headers: {
27477
28306
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27478
28307
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27483,10 +28312,10 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27483
28312
  [name: string]: unknown;
27484
28313
  };
27485
28314
  content: {
27486
- "application/json": components["schemas"]["ErrorResponse"];
28315
+ "application/json": components["schemas"]["RoastArtisanImportClearResponse"];
27487
28316
  };
27488
28317
  };
27489
- 403: {
28318
+ 401: {
27490
28319
  headers: {
27491
28320
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27492
28321
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27500,7 +28329,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27500
28329
  "application/json": components["schemas"]["ErrorResponse"];
27501
28330
  };
27502
28331
  };
27503
- 404: {
28332
+ 403: {
27504
28333
  headers: {
27505
28334
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27506
28335
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27514,7 +28343,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27514
28343
  "application/json": components["schemas"]["ErrorResponse"];
27515
28344
  };
27516
28345
  };
27517
- 409: {
28346
+ 404: {
27518
28347
  headers: {
27519
28348
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27520
28349
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27560,46 +28389,25 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27560
28389
  };
27561
28390
  };
27562
28391
  }, {
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
28392
  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
28393
  path: {
27594
28394
  id: number;
27595
28395
  };
27596
- cookie?: never;
27597
28396
  };
27598
- requestBody: {
27599
- content: {
27600
- "application/json": components["schemas"]["RoastArtisanImportReplaceRequest"];
28397
+ }, `${string}/${string}`>>;
28398
+ };
28399
+ referenceProfiles: {
28400
+ /** List Studio reference profiles without mixing them into roast history. */
28401
+ list: (includeArchived?: boolean) => Promise<openapi_fetch.FetchResponse<{
28402
+ parameters: {
28403
+ query?: {
28404
+ includeArchived?: boolean;
27601
28405
  };
28406
+ header?: never;
28407
+ path?: never;
28408
+ cookie?: never;
27602
28409
  };
28410
+ requestBody?: never;
27603
28411
  responses: {
27604
28412
  200: {
27605
28413
  headers: {
@@ -27612,10 +28420,10 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27612
28420
  [name: string]: unknown;
27613
28421
  };
27614
28422
  content: {
27615
- "application/json": components["schemas"]["RoastImportResponse"];
28423
+ "application/json": components["schemas"]["ReferenceProfileListResponse"];
27616
28424
  };
27617
28425
  };
27618
- 400: {
28426
+ 401: {
27619
28427
  headers: {
27620
28428
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27621
28429
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27629,7 +28437,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27629
28437
  "application/json": components["schemas"]["ErrorResponse"];
27630
28438
  };
27631
28439
  };
27632
- 401: {
28440
+ 403: {
27633
28441
  headers: {
27634
28442
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27635
28443
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27643,7 +28451,41 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27643
28451
  "application/json": components["schemas"]["ErrorResponse"];
27644
28452
  };
27645
28453
  };
27646
- 403: {
28454
+ 429: components["responses"]["ApiRateLimitExceeded"];
28455
+ };
28456
+ }, {
28457
+ params: {
28458
+ query: {
28459
+ includeArchived: boolean;
28460
+ };
28461
+ };
28462
+ }, `${string}/${string}`>>;
28463
+ get: (id: string) => Promise<openapi_fetch.FetchResponse<{
28464
+ parameters: {
28465
+ query?: never;
28466
+ header?: never;
28467
+ path: {
28468
+ id: string;
28469
+ };
28470
+ cookie?: never;
28471
+ };
28472
+ requestBody?: never;
28473
+ responses: {
28474
+ 200: {
28475
+ headers: {
28476
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28477
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28478
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28479
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28480
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28481
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28482
+ [name: string]: unknown;
28483
+ };
28484
+ content: {
28485
+ "application/json": components["schemas"]["ReferenceProfileResponse"];
28486
+ };
28487
+ };
28488
+ 400: {
27647
28489
  headers: {
27648
28490
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27649
28491
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27657,7 +28499,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27657
28499
  "application/json": components["schemas"]["ErrorResponse"];
27658
28500
  };
27659
28501
  };
27660
- 404: {
28502
+ 401: {
27661
28503
  headers: {
27662
28504
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27663
28505
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27671,7 +28513,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27671
28513
  "application/json": components["schemas"]["ErrorResponse"];
27672
28514
  };
27673
28515
  };
27674
- 409: {
28516
+ 403: {
27675
28517
  headers: {
27676
28518
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27677
28519
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27685,7 +28527,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27685
28527
  "application/json": components["schemas"]["ErrorResponse"];
27686
28528
  };
27687
28529
  };
27688
- 429: {
28530
+ 404: {
27689
28531
  headers: {
27690
28532
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27691
28533
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27693,15 +28535,13 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27693
28535
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27694
28536
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27695
28537
  "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
28538
  [name: string]: unknown;
27699
28539
  };
27700
28540
  content: {
27701
28541
  "application/json": components["schemas"]["ErrorResponse"];
27702
28542
  };
27703
28543
  };
27704
- 503: {
28544
+ 409: {
27705
28545
  headers: {
27706
28546
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27707
28547
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27715,32 +28555,22 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27715
28555
  "application/json": components["schemas"]["ErrorResponse"];
27716
28556
  };
27717
28557
  };
28558
+ 429: components["responses"]["ApiRateLimitExceeded"];
27718
28559
  };
27719
28560
  }, {
27720
28561
  params: {
27721
28562
  path: {
27722
- id: number;
28563
+ id: string;
27723
28564
  };
27724
- header: {
27725
- "if-match": string;
27726
- } | undefined;
27727
- };
27728
- body: {
27729
- fileName: string;
27730
- fileContent: string;
27731
- fileSize?: number;
27732
28565
  };
27733
28566
  }, `${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<{
28567
+ chart: (id: string, revisionId: string) => Promise<openapi_fetch.FetchResponse<{
27739
28568
  parameters: {
27740
28569
  query?: never;
27741
28570
  header?: never;
27742
28571
  path: {
27743
- id: number;
28572
+ id: string;
28573
+ revisionId: string;
27744
28574
  };
27745
28575
  cookie?: never;
27746
28576
  };
@@ -27757,10 +28587,10 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27757
28587
  [name: string]: unknown;
27758
28588
  };
27759
28589
  content: {
27760
- "application/json": components["schemas"]["RoastArtisanImportClearResponse"];
28590
+ "application/json": components["schemas"]["ReferenceProfileChartResponse"];
27761
28591
  };
27762
28592
  };
27763
- 401: {
28593
+ 400: {
27764
28594
  headers: {
27765
28595
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27766
28596
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27774,7 +28604,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27774
28604
  "application/json": components["schemas"]["ErrorResponse"];
27775
28605
  };
27776
28606
  };
27777
- 403: {
28607
+ 401: {
27778
28608
  headers: {
27779
28609
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27780
28610
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27788,7 +28618,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27788
28618
  "application/json": components["schemas"]["ErrorResponse"];
27789
28619
  };
27790
28620
  };
27791
- 404: {
28621
+ 403: {
27792
28622
  headers: {
27793
28623
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27794
28624
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27802,7 +28632,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27802
28632
  "application/json": components["schemas"]["ErrorResponse"];
27803
28633
  };
27804
28634
  };
27805
- 429: {
28635
+ 404: {
27806
28636
  headers: {
27807
28637
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27808
28638
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27810,15 +28640,13 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27810
28640
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27811
28641
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27812
28642
  "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
28643
  [name: string]: unknown;
27816
28644
  };
27817
28645
  content: {
27818
28646
  "application/json": components["schemas"]["ErrorResponse"];
27819
28647
  };
27820
28648
  };
27821
- 503: {
28649
+ 409: {
27822
28650
  headers: {
27823
28651
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27824
28652
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27832,27 +28660,32 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27832
28660
  "application/json": components["schemas"]["ErrorResponse"];
27833
28661
  };
27834
28662
  };
28663
+ 429: components["responses"]["ApiRateLimitExceeded"];
27835
28664
  };
27836
28665
  }, {
27837
28666
  params: {
27838
28667
  path: {
27839
- id: number;
28668
+ id: string;
28669
+ revisionId: string;
27840
28670
  };
27841
28671
  };
27842
28672
  }, `${string}/${string}`>>;
27843
- };
27844
- referenceProfiles: {
27845
- /** List Studio reference profiles without mixing them into roast history. */
27846
- list: (includeArchived?: boolean) => Promise<openapi_fetch.FetchResponse<{
28673
+ /** Preview explicit changes without saving or changing the parent. */
28674
+ preview: (id: string, revisionId: string, body: ReferenceProfileGenerationRequest) => Promise<openapi_fetch.FetchResponse<{
27847
28675
  parameters: {
27848
- query?: {
27849
- includeArchived?: boolean;
27850
- };
28676
+ query?: never;
27851
28677
  header?: never;
27852
- path?: never;
28678
+ path: {
28679
+ id: string;
28680
+ revisionId: string;
28681
+ };
27853
28682
  cookie?: never;
27854
28683
  };
27855
- requestBody?: never;
28684
+ requestBody: {
28685
+ content: {
28686
+ "application/json": components["schemas"]["ReferenceProfileGenerationRequest"];
28687
+ };
28688
+ };
27856
28689
  responses: {
27857
28690
  200: {
27858
28691
  headers: {
@@ -27865,7 +28698,21 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27865
28698
  [name: string]: unknown;
27866
28699
  };
27867
28700
  content: {
27868
- "application/json": components["schemas"]["ReferenceProfileListResponse"];
28701
+ "application/json": components["schemas"]["ReferenceProfileGenerationPreviewResponse"];
28702
+ };
28703
+ };
28704
+ 400: {
28705
+ headers: {
28706
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28707
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28708
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28709
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28710
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28711
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28712
+ [name: string]: unknown;
28713
+ };
28714
+ content: {
28715
+ "application/json": components["schemas"]["ErrorResponse"];
27869
28716
  };
27870
28717
  };
27871
28718
  401: {
@@ -27896,27 +28743,83 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27896
28743
  "application/json": components["schemas"]["ErrorResponse"];
27897
28744
  };
27898
28745
  };
28746
+ 404: {
28747
+ headers: {
28748
+ "X-RateLimit-Limit": components["headers"] /** Reflect bounded recent messages into versioned session-owner memory. */["X-RateLimit-Limit"];
28749
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28750
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28751
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28752
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28753
+ "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28754
+ [name: string]: unknown;
28755
+ };
28756
+ content: {
28757
+ "application/json": components["schemas"]["ErrorResponse"];
28758
+ };
28759
+ };
28760
+ 409: {
28761
+ headers: {
28762
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28763
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28764
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28765
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28766
+ "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28767
+ "X-RateLimit-Burst-Reset": components["headers"] /**
28768
+ * Atomically create owner-private manual inventory lots. The required
28769
+ * idempotency UUID is the stable batch identity and can be reconciled
28770
+ * with `getManualBatch` after an uncertain response.
28771
+ */["X-RateLimit-Burst-Reset"];
28772
+ [name: string]: unknown;
28773
+ };
28774
+ content: {
28775
+ "application/json": components["schemas"]["ErrorResponse"];
28776
+ };
28777
+ };
27899
28778
  429: components["responses"]["ApiRateLimitExceeded"];
27900
28779
  };
27901
28780
  }, {
27902
28781
  params: {
27903
- query: {
27904
- includeArchived: boolean;
28782
+ path: {
28783
+ id: string;
28784
+ revisionId: string;
28785
+ };
28786
+ };
28787
+ body: {
28788
+ title: string;
28789
+ notes?: string;
28790
+ userGoal?: string;
28791
+ modelRecommendation?: string;
28792
+ userEdits?: string;
28793
+ changes: {
28794
+ temperatureAdjustments: {
28795
+ kind: "bean_temperature" | "environmental_temperature";
28796
+ startMilliseconds: number;
28797
+ endMilliseconds: number;
28798
+ delta: number;
28799
+ }[];
27905
28800
  };
27906
28801
  };
27907
28802
  }, `${string}/${string}`>>;
27908
- get: (id: string) => Promise<openapi_fetch.FetchResponse<{
28803
+ /** Save an immutable generated reference with parent lineage. */
28804
+ generate: (id: string, revisionId: string, body: ReferenceProfileGenerationRequest, idempotencyKey: string) => Promise<openapi_fetch.FetchResponse<{
27909
28805
  parameters: {
27910
28806
  query?: never;
27911
- header?: never;
28807
+ header: {
28808
+ "idempotency-key": string;
28809
+ };
27912
28810
  path: {
27913
28811
  id: string;
28812
+ revisionId: string;
27914
28813
  };
27915
28814
  cookie?: never;
27916
28815
  };
27917
- requestBody?: never;
28816
+ requestBody: {
28817
+ content: {
28818
+ "application/json": components["schemas"]["ReferenceProfileGenerationRequest"];
28819
+ };
28820
+ };
27918
28821
  responses: {
27919
- 200: {
28822
+ 201: {
27920
28823
  headers: {
27921
28824
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27922
28825
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
@@ -27932,7 +28835,10 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27932
28835
  };
27933
28836
  400: {
27934
28837
  headers: {
27935
- "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28838
+ "X-RateLimit-Limit": components["headers"] /**
28839
+ * Update one of the caller's own inventory rows. Pass `ifMatch` (the
28840
+ * row's `last_updated`) to enable optimistic concurrency (409 on mismatch).
28841
+ */["X-RateLimit-Limit"];
27936
28842
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
27937
28843
  "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27938
28844
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
@@ -27947,7 +28853,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27947
28853
  401: {
27948
28854
  headers: {
27949
28855
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
27950
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28856
+ "X-RateLimit-Remaining": components["headers"] /** List the caller's own roast profiles (owner-scoped). */["X-RateLimit-Remaining"];
27951
28857
  "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27952
28858
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27953
28859
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
@@ -27979,7 +28885,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
27979
28885
  "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
27980
28886
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
27981
28887
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
27982
- "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28888
+ "X-RateLimit-Burst-Reset": components["headers"] /** Delete one of the caller's own roast profiles. */["X-RateLimit-Burst-Reset"];
27983
28889
  [name: string]: unknown;
27984
28890
  };
27985
28891
  content: {
@@ -28006,10 +28912,30 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28006
28912
  params: {
28007
28913
  path: {
28008
28914
  id: string;
28915
+ revisionId: string;
28916
+ };
28917
+ header: {
28918
+ "idempotency-key": string;
28919
+ };
28920
+ };
28921
+ body: {
28922
+ title: string;
28923
+ notes?: string;
28924
+ userGoal?: string;
28925
+ modelRecommendation?: string;
28926
+ userEdits?: string;
28927
+ changes: {
28928
+ temperatureAdjustments: {
28929
+ kind: "bean_temperature" | "environmental_temperature";
28930
+ startMilliseconds: number;
28931
+ endMilliseconds: number;
28932
+ delta: number;
28933
+ }[];
28009
28934
  };
28010
28935
  };
28011
28936
  }, `${string}/${string}`>>;
28012
- chart: (id: string, revisionId: string) => Promise<openapi_fetch.FetchResponse<{
28937
+ /** Retrieve only a saved unsigned generated background profile. */
28938
+ exportGenerated: (id: string, revisionId: string) => Promise<openapi_fetch.FetchResponse<{
28013
28939
  parameters: {
28014
28940
  query?: never;
28015
28941
  header?: never;
@@ -28032,7 +28958,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28032
28958
  [name: string]: unknown;
28033
28959
  };
28034
28960
  content: {
28035
- "application/json": components["schemas"]["ReferenceProfileChartResponse"];
28961
+ "application/json": components["schemas"]["ReferenceProfileGenerationExportResponse"];
28036
28962
  };
28037
28963
  };
28038
28964
  400: {
@@ -28067,7 +28993,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28067
28993
  headers: {
28068
28994
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28069
28995
  "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28070
- "X-RateLimit-Reset": components["headers"] /** Parchment Price Index (aggregate snapshots). */["X-RateLimit-Reset"];
28996
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28071
28997
  "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28072
28998
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28073
28999
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
@@ -28121,11 +29047,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28121
29047
  header: {
28122
29048
  "idempotency-key": string;
28123
29049
  };
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;
29050
+ path?: never;
28129
29051
  cookie?: never;
28130
29052
  };
28131
29053
  requestBody: {
@@ -28384,11 +29306,9 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28384
29306
  400: {
28385
29307
  headers: {
28386
29308
  "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
28387
- "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
29309
+ "X-RateLimit-Remaining": components["headers"] /** Create an API key. The raw secret is returned only once. */["X-RateLimit-Remaining"];
28388
29310
  "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"];
29311
+ "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
28392
29312
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28393
29313
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28394
29314
  [name: string]: unknown;
@@ -28414,9 +29334,9 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
28414
29334
  403: {
28415
29335
  headers: {
28416
29336
  "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"];
29337
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
28418
29338
  "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
28419
- "X-RateLimit-Burst-Limit": components["headers"]["X-RateLimit-Burst-Limit"];
29339
+ "X-RateLimit-Burst-Limit": components["headers"] /** Create or replay an embedded Checkout Session after activation. */["X-RateLimit-Burst-Limit"];
28420
29340
  "X-RateLimit-Burst-Remaining": components["headers"]["X-RateLimit-Burst-Remaining"];
28421
29341
  "X-RateLimit-Burst-Reset": components["headers"]["X-RateLimit-Burst-Reset"];
28422
29342
  [name: string]: unknown;