@printhive/api 0.3.2 → 0.4.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
@@ -1,73 +1,3 @@
1
- type PrintHiveOptions = {
2
- apiKey: string;
3
- baseUrl?: string;
4
- fetch?: typeof globalThis.fetch;
5
- timeoutMs?: number;
6
- maxRetries?: number;
7
- };
8
- type Request<T> = {
9
- path: string;
10
- decode: (response: Response) => Promise<T>;
11
- query?: URLSearchParams;
12
- signal?: AbortSignal;
13
- } & ({
14
- method: "GET";
15
- } | {
16
- method: "POST";
17
- body: () => Promise<BodyInit>;
18
- size?: number;
19
- contentType?: string | null;
20
- idempotencyKey: string;
21
- replayable: boolean;
22
- });
23
- declare class Transport {
24
- private readonly options;
25
- constructor(options: PrintHiveOptions);
26
- request<T>(request: Request<T>): Promise<T>;
27
- }
28
-
29
- type CatalogFilamentInput = {
30
- externalId: string;
31
- brand: string;
32
- material: string;
33
- colorName: string;
34
- sku: string;
35
- replacementFilamentId?: string | null;
36
- } & ({
37
- colorHex: string;
38
- hex?: string;
39
- } | {
40
- hex: string;
41
- colorHex?: string;
42
- });
43
- type CatalogFilament = {
44
- id: string;
45
- sku: string;
46
- organization_id: string;
47
- material_type: string;
48
- color: string;
49
- metadata: {
50
- externalId: string;
51
- colorName: string;
52
- replacementFilamentId: string | null;
53
- };
54
- };
55
- declare class FilamentCatalog {
56
- private readonly transport;
57
- constructor(transport: Transport);
58
- upsert(input: CatalogFilamentInput): Promise<CatalogFilament>;
59
- list(input?: {
60
- externalId?: string;
61
- sku?: string;
62
- limit?: number;
63
- offset?: number;
64
- }): Promise<{
65
- materials: CatalogFilament[];
66
- total: number;
67
- }>;
68
- get(id: string): Promise<CatalogFilament>;
69
- }
70
-
71
1
  interface paths {
72
2
  "/v1/printers": {
73
3
  parameters: {
@@ -213,6 +143,120 @@ interface paths {
213
143
  patch?: never;
214
144
  trace?: never;
215
145
  };
146
+ "/v1/printers/search": {
147
+ parameters: {
148
+ query?: never;
149
+ header?: never;
150
+ path?: never;
151
+ cookie?: never;
152
+ };
153
+ /** Search organization printers with the web palette matcher */
154
+ get: {
155
+ parameters: {
156
+ query: {
157
+ q: string;
158
+ limit?: number;
159
+ offset?: number;
160
+ };
161
+ header?: never;
162
+ path?: never;
163
+ cookie?: never;
164
+ };
165
+ requestBody?: never;
166
+ responses: {
167
+ /** @description Default Response */
168
+ 200: {
169
+ headers: {
170
+ [name: string]: unknown;
171
+ };
172
+ content: {
173
+ "application/json": {
174
+ printers: {
175
+ id: string;
176
+ name: string;
177
+ model: string;
178
+ serial_number: string;
179
+ status: string;
180
+ location_text: string;
181
+ score: number;
182
+ /** @enum {string} */
183
+ match: "text" | "typo" | "server";
184
+ }[];
185
+ total: number;
186
+ query: string;
187
+ };
188
+ };
189
+ };
190
+ };
191
+ };
192
+ put?: never;
193
+ post?: never;
194
+ delete?: never;
195
+ options?: never;
196
+ head?: never;
197
+ patch?: never;
198
+ trace?: never;
199
+ };
200
+ "/v1/filaments/search": {
201
+ parameters: {
202
+ query?: never;
203
+ header?: never;
204
+ path?: never;
205
+ cookie?: never;
206
+ };
207
+ /** Search available catalog filaments with the web picker */
208
+ get: {
209
+ parameters: {
210
+ query: {
211
+ q: string;
212
+ limit?: number;
213
+ offset?: number;
214
+ };
215
+ header?: never;
216
+ path?: never;
217
+ cookie?: never;
218
+ };
219
+ requestBody?: never;
220
+ responses: {
221
+ /** @description Default Response */
222
+ 200: {
223
+ headers: {
224
+ [name: string]: unknown;
225
+ };
226
+ content: {
227
+ "application/json": {
228
+ filaments: {
229
+ id: string;
230
+ filamentId: string;
231
+ acceptedByCreate: boolean;
232
+ name: string;
233
+ brand: null | string;
234
+ material_type: string;
235
+ color: null | string;
236
+ diameter: null | number;
237
+ /** @enum {string} */
238
+ category: "filament";
239
+ sku?: null | string;
240
+ organization_id: null | string;
241
+ }[];
242
+ total: number;
243
+ hasMore: boolean;
244
+ /** @enum {string} */
245
+ matchMode: "strict" | "broadened";
246
+ originalQuery: null | string;
247
+ };
248
+ };
249
+ };
250
+ };
251
+ };
252
+ put?: never;
253
+ post?: never;
254
+ delete?: never;
255
+ options?: never;
256
+ head?: never;
257
+ patch?: never;
258
+ trace?: never;
259
+ };
216
260
  "/v1/partner-production/uploads": {
217
261
  parameters: {
218
262
  query?: never;
@@ -353,6 +397,16 @@ interface paths {
353
397
  status: "missing";
354
398
  };
355
399
  printerModel?: string;
400
+ machine?: {
401
+ sourceMachine: {
402
+ preset: string;
403
+ model: string;
404
+ nozzleDiameterMm: number;
405
+ };
406
+ compatibleMachines: string[];
407
+ materials: string[];
408
+ bed: string;
409
+ };
356
410
  };
357
411
  } | {
358
412
  /** Format: uuid */
@@ -434,6 +488,16 @@ interface paths {
434
488
  status: "missing";
435
489
  };
436
490
  printerModel?: string;
491
+ machine?: {
492
+ sourceMachine: {
493
+ preset: string;
494
+ model: string;
495
+ nozzleDiameterMm: number;
496
+ };
497
+ compatibleMachines: string[];
498
+ materials: string[];
499
+ bed: string;
500
+ };
437
501
  } | null;
438
502
  error: {
439
503
  /** @enum {string} */
@@ -561,6 +625,16 @@ interface paths {
561
625
  status: "missing";
562
626
  };
563
627
  printerModel?: string;
628
+ machine?: {
629
+ sourceMachine: {
630
+ preset: string;
631
+ model: string;
632
+ nozzleDiameterMm: number;
633
+ };
634
+ compatibleMachines: string[];
635
+ materials: string[];
636
+ bed: string;
637
+ };
564
638
  };
565
639
  } | {
566
640
  /** Format: uuid */
@@ -642,6 +716,16 @@ interface paths {
642
716
  status: "missing";
643
717
  };
644
718
  printerModel?: string;
719
+ machine?: {
720
+ sourceMachine: {
721
+ preset: string;
722
+ model: string;
723
+ nozzleDiameterMm: number;
724
+ };
725
+ compatibleMachines: string[];
726
+ materials: string[];
727
+ bed: string;
728
+ };
645
729
  } | null;
646
730
  error: {
647
731
  /** @enum {string} */
@@ -986,6 +1070,16 @@ interface paths {
986
1070
  status: "missing";
987
1071
  };
988
1072
  printerModel?: string;
1073
+ machine?: {
1074
+ sourceMachine: {
1075
+ preset: string;
1076
+ model: string;
1077
+ nozzleDiameterMm: number;
1078
+ };
1079
+ compatibleMachines: string[];
1080
+ materials: string[];
1081
+ bed: string;
1082
+ };
989
1083
  };
990
1084
  } | {
991
1085
  /** Format: uuid */
@@ -1067,6 +1161,16 @@ interface paths {
1067
1161
  status: "missing";
1068
1162
  };
1069
1163
  printerModel?: string;
1164
+ machine?: {
1165
+ sourceMachine: {
1166
+ preset: string;
1167
+ model: string;
1168
+ nozzleDiameterMm: number;
1169
+ };
1170
+ compatibleMachines: string[];
1171
+ materials: string[];
1172
+ bed: string;
1173
+ };
1070
1174
  } | null;
1071
1175
  error: {
1072
1176
  /** @enum {string} */
@@ -1289,6 +1393,16 @@ interface paths {
1289
1393
  status: "missing";
1290
1394
  };
1291
1395
  printerModel?: string;
1396
+ machine?: {
1397
+ sourceMachine: {
1398
+ preset: string;
1399
+ model: string;
1400
+ nozzleDiameterMm: number;
1401
+ };
1402
+ compatibleMachines: string[];
1403
+ materials: string[];
1404
+ bed: string;
1405
+ };
1292
1406
  };
1293
1407
  } | {
1294
1408
  /** Format: uuid */
@@ -1370,6 +1484,16 @@ interface paths {
1370
1484
  status: "missing";
1371
1485
  };
1372
1486
  printerModel?: string;
1487
+ machine?: {
1488
+ sourceMachine: {
1489
+ preset: string;
1490
+ model: string;
1491
+ nozzleDiameterMm: number;
1492
+ };
1493
+ compatibleMachines: string[];
1494
+ materials: string[];
1495
+ bed: string;
1496
+ };
1373
1497
  } | null;
1374
1498
  error: {
1375
1499
  /** @enum {string} */
@@ -1611,6 +1735,16 @@ interface paths {
1611
1735
  status: "missing";
1612
1736
  };
1613
1737
  printerModel?: string;
1738
+ machine?: {
1739
+ sourceMachine: {
1740
+ preset: string;
1741
+ model: string;
1742
+ nozzleDiameterMm: number;
1743
+ };
1744
+ compatibleMachines: string[];
1745
+ materials: string[];
1746
+ bed: string;
1747
+ };
1614
1748
  };
1615
1749
  } | {
1616
1750
  /** Format: uuid */
@@ -1692,6 +1826,16 @@ interface paths {
1692
1826
  status: "missing";
1693
1827
  };
1694
1828
  printerModel?: string;
1829
+ machine?: {
1830
+ sourceMachine: {
1831
+ preset: string;
1832
+ model: string;
1833
+ nozzleDiameterMm: number;
1834
+ };
1835
+ compatibleMachines: string[];
1836
+ materials: string[];
1837
+ bed: string;
1838
+ };
1695
1839
  } | null;
1696
1840
  error: {
1697
1841
  /** @enum {string} */
@@ -1823,6 +1967,8 @@ interface paths {
1823
1967
  "application/json": {
1824
1968
  name: string;
1825
1969
  externalId?: string;
1970
+ /** @default false */
1971
+ acceptEngineSettingUpdates?: boolean;
1826
1972
  model_file_id: string;
1827
1973
  organization_id?: string;
1828
1974
  /** @description Organization ID (optional, defaults to user's primary organization) */
@@ -1832,16 +1978,21 @@ interface paths {
1832
1978
  /** @description One-based plate number in the project archive */
1833
1979
  plate?: number;
1834
1980
  /** @description Complete filament requirements for the selected plate. Cannot be combined with raw AMS mappings. Matched using Smart Queue material and color proximity rules. */
1835
- filaments?: {
1981
+ filaments?: ({
1836
1982
  /** @description Zero-based project filament index */
1837
1983
  sourceSlot: number;
1838
- material: string;
1839
- color: string;
1984
+ /**
1985
+ * Format: uuid
1986
+ * @description Organization catalog filament ID. Derives material and color; explicit values must agree.
1987
+ */
1988
+ filamentId?: string;
1989
+ material?: string;
1990
+ color?: string;
1840
1991
  targetSlot?: {
1841
1992
  ams_id: number;
1842
1993
  slot_id: number;
1843
1994
  };
1844
- }[];
1995
+ } | unknown | unknown)[];
1845
1996
  /**
1846
1997
  * @description Create assigned jobs waiting for filament, or reject mismatches with 422
1847
1998
  * @default wait
@@ -1871,16 +2022,21 @@ interface paths {
1871
2022
  /** @description One-based plate number in the project archive */
1872
2023
  plate: number;
1873
2024
  /** @description Complete filament requirements for the selected plate. Cannot be combined with raw AMS mappings. Matched using Smart Queue material and color proximity rules. */
1874
- filaments: {
2025
+ filaments: ({
1875
2026
  /** @description Zero-based project filament index */
1876
2027
  sourceSlot: number;
1877
- material: string;
1878
- color: string;
2028
+ /**
2029
+ * Format: uuid
2030
+ * @description Organization catalog filament ID. Derives material and color; explicit values must agree.
2031
+ */
2032
+ filamentId?: string;
2033
+ material?: string;
2034
+ color?: string;
1879
2035
  targetSlot?: {
1880
2036
  ams_id: number;
1881
2037
  slot_id: number;
1882
2038
  };
1883
- }[];
2039
+ } | unknown | unknown)[];
1884
2040
  /** Format: uuid */
1885
2041
  printer_id?: string;
1886
2042
  /**
@@ -1890,6 +2046,8 @@ interface paths {
1890
2046
  */
1891
2047
  on_filament_mismatch?: "wait" | "reject";
1892
2048
  externalId?: string;
2049
+ /** @default false */
2050
+ acceptEngineSettingUpdates?: boolean;
1893
2051
  /**
1894
2052
  * @default automatic
1895
2053
  * @enum {string}
@@ -1925,6 +2083,12 @@ interface paths {
1925
2083
  code: "filament_not_loaded" | "material_route_changed";
1926
2084
  /** @enum {string} */
1927
2085
  cause?: "slot_empty" | "missing_material" | "color_distance" | "slot_conflict";
2086
+ /** Format: uuid */
2087
+ filamentId?: string;
2088
+ brand?: string | null;
2089
+ name?: string;
2090
+ colorName?: string | null;
2091
+ colorHex?: string;
1928
2092
  sourceSlot?: number;
1929
2093
  material?: string;
1930
2094
  color?: string;
@@ -1992,10 +2156,16 @@ interface paths {
1992
2156
  /** @enum {string} */
1993
2157
  filament_route_state?: "waiting" | "resolved";
1994
2158
  filament_waiting_reasons?: {
2159
+ /** Format: uuid */
2160
+ filamentId?: string;
2161
+ brand?: string | null;
2162
+ name?: string;
2163
+ colorName?: string | null;
2164
+ material?: string;
2165
+ colorHex?: string;
1995
2166
  /** @enum {string} */
1996
2167
  code: "filament_not_loaded" | "material_route_changed";
1997
2168
  sourceSlot?: number;
1998
- material?: string;
1999
2169
  color?: string;
2000
2170
  /** @enum {string} */
2001
2171
  cause?: "slot_empty" | "missing_material" | "color_distance" | "slot_conflict";
@@ -2010,9 +2180,69 @@ interface paths {
2010
2180
  } & {
2011
2181
  [key: string]: unknown;
2012
2182
  }) | null;
2013
- requiredActions: {
2183
+ requiredActions: (({
2184
+ item: number;
2185
+ plateNumber: number;
2186
+ hold: {
2187
+ /** @enum {string} */
2188
+ code: "material_change_requires_qualification";
2189
+ slots: number[];
2190
+ } | {
2191
+ /** @enum {string} */
2192
+ code: "inspection_review_required";
2193
+ reason: string;
2194
+ } | {
2195
+ /** @enum {string} */
2196
+ code: "unmapped_used_slot";
2197
+ slots: number[];
2198
+ } | {
2199
+ /** @enum {string} */
2200
+ code: "project_source_too_large";
2201
+ limit: {
2202
+ /** @enum {string} */
2203
+ name: "projectSourceBytes";
2204
+ max: number;
2205
+ observed: number;
2206
+ };
2207
+ } | {
2208
+ /** @enum {string} */
2209
+ code: "project_review_required";
2210
+ detail: string;
2211
+ changes?: {
2212
+ key: string;
2213
+ sourceValue: (string | null) | string[] | number | boolean;
2214
+ engineValue: (string | null) | string[] | number | boolean;
2215
+ slots: number[];
2216
+ }[];
2217
+ sourceRelease?: string | null;
2218
+ engineRelease?: string;
2219
+ } | {
2220
+ /** @enum {string} */
2221
+ code: "preview_mismatch_after_remap";
2222
+ detail: string;
2223
+ };
2224
+ } & {
2014
2225
  [key: string]: unknown;
2015
- }[];
2226
+ }) | ({
2227
+ code: string;
2228
+ } & {
2229
+ [key: string]: unknown;
2230
+ }))[];
2231
+ /** @default [] */
2232
+ warnings: ({
2233
+ /** @enum {string} */
2234
+ code: "custom_instructions_kept";
2235
+ keys: string[];
2236
+ } | {
2237
+ /** @enum {string} */
2238
+ code: "custom_instructions_replaced";
2239
+ keys: string[];
2240
+ } | {
2241
+ /** @enum {string} */
2242
+ code: "preview_stale_after_remap";
2243
+ slots: number[];
2244
+ bedChanged: boolean;
2245
+ })[];
2016
2246
  error: {
2017
2247
  [key: string]: unknown;
2018
2248
  } | null;
@@ -2055,12 +2285,12 @@ interface paths {
2055
2285
  content: {
2056
2286
  "application/json": {
2057
2287
  /** @enum {string} */
2058
- error?: "filament_requirements_unsatisfied" | "printer_model_incompatible" | "hardware:nozzle_diameter_mismatch" | "target_slot_unavailable" | "insufficient_filament_routes";
2288
+ error?: "filament_catalog_conflict" | "catalog_filament_not_found" | "invalid_catalog_filament" | "filament_requirements_unsatisfied" | "printer_model_incompatible" | "hardware:nozzle_diameter_mismatch" | "target_slot_unavailable" | "insufficient_filament_routes";
2059
2289
  message?: string;
2060
2290
  filaments?: {
2061
2291
  sourceSlot?: number;
2062
2292
  /** @enum {string} */
2063
- reason?: "missing_material" | "color_distance" | "slot_empty" | "slot_conflict";
2293
+ reason?: "filament_catalog_conflict" | "catalog_filament_not_found" | "invalid_catalog_filament" | "missing_material" | "color_distance" | "slot_empty" | "slot_conflict";
2064
2294
  }[];
2065
2295
  };
2066
2296
  };
@@ -2152,6 +2382,12 @@ interface paths {
2152
2382
  code: "filament_not_loaded" | "material_route_changed";
2153
2383
  /** @enum {string} */
2154
2384
  cause?: "slot_empty" | "missing_material" | "color_distance" | "slot_conflict";
2385
+ /** Format: uuid */
2386
+ filamentId?: string;
2387
+ brand?: string | null;
2388
+ name?: string;
2389
+ colorName?: string | null;
2390
+ colorHex?: string;
2155
2391
  sourceSlot?: number;
2156
2392
  material?: string;
2157
2393
  color?: string;
@@ -2407,10 +2643,16 @@ interface paths {
2407
2643
  /** @enum {string} */
2408
2644
  filament_route_state?: "waiting" | "resolved";
2409
2645
  filament_waiting_reasons?: {
2646
+ /** Format: uuid */
2647
+ filamentId?: string;
2648
+ brand?: string | null;
2649
+ name?: string;
2650
+ colorName?: string | null;
2651
+ material?: string;
2652
+ colorHex?: string;
2410
2653
  /** @enum {string} */
2411
2654
  code: "filament_not_loaded" | "material_route_changed";
2412
2655
  sourceSlot?: number;
2413
- material?: string;
2414
2656
  color?: string;
2415
2657
  /** @enum {string} */
2416
2658
  cause?: "slot_empty" | "missing_material" | "color_distance" | "slot_conflict";
@@ -2425,27 +2667,87 @@ interface paths {
2425
2667
  } & {
2426
2668
  [key: string]: unknown;
2427
2669
  }) | null;
2428
- requiredActions: {
2429
- [key: string]: unknown;
2430
- }[];
2431
- error: {
2432
- [key: string]: unknown;
2433
- } | null;
2434
- };
2435
- };
2436
- };
2437
- /** @description Default Response */
2438
- 404: {
2439
- headers: {
2440
- [name: string]: unknown;
2441
- };
2442
- content: {
2443
- "application/json": {
2444
- error?: string;
2445
- };
2446
- };
2447
- };
2448
- };
2670
+ requiredActions: (({
2671
+ item: number;
2672
+ plateNumber: number;
2673
+ hold: {
2674
+ /** @enum {string} */
2675
+ code: "material_change_requires_qualification";
2676
+ slots: number[];
2677
+ } | {
2678
+ /** @enum {string} */
2679
+ code: "inspection_review_required";
2680
+ reason: string;
2681
+ } | {
2682
+ /** @enum {string} */
2683
+ code: "unmapped_used_slot";
2684
+ slots: number[];
2685
+ } | {
2686
+ /** @enum {string} */
2687
+ code: "project_source_too_large";
2688
+ limit: {
2689
+ /** @enum {string} */
2690
+ name: "projectSourceBytes";
2691
+ max: number;
2692
+ observed: number;
2693
+ };
2694
+ } | {
2695
+ /** @enum {string} */
2696
+ code: "project_review_required";
2697
+ detail: string;
2698
+ changes?: {
2699
+ key: string;
2700
+ sourceValue: (string | null) | string[] | number | boolean;
2701
+ engineValue: (string | null) | string[] | number | boolean;
2702
+ slots: number[];
2703
+ }[];
2704
+ sourceRelease?: string | null;
2705
+ engineRelease?: string;
2706
+ } | {
2707
+ /** @enum {string} */
2708
+ code: "preview_mismatch_after_remap";
2709
+ detail: string;
2710
+ };
2711
+ } & {
2712
+ [key: string]: unknown;
2713
+ }) | ({
2714
+ code: string;
2715
+ } & {
2716
+ [key: string]: unknown;
2717
+ }))[];
2718
+ /** @default [] */
2719
+ warnings: ({
2720
+ /** @enum {string} */
2721
+ code: "custom_instructions_kept";
2722
+ keys: string[];
2723
+ } | {
2724
+ /** @enum {string} */
2725
+ code: "custom_instructions_replaced";
2726
+ keys: string[];
2727
+ } | {
2728
+ /** @enum {string} */
2729
+ code: "preview_stale_after_remap";
2730
+ slots: number[];
2731
+ bedChanged: boolean;
2732
+ })[];
2733
+ error: {
2734
+ [key: string]: unknown;
2735
+ } | null;
2736
+ };
2737
+ };
2738
+ };
2739
+ /** @description Default Response */
2740
+ 404: {
2741
+ headers: {
2742
+ [name: string]: unknown;
2743
+ };
2744
+ content: {
2745
+ "application/json": {
2746
+ error?: string;
2747
+ };
2748
+ };
2749
+ };
2750
+ };
2449
2751
  };
2450
2752
  put?: never;
2451
2753
  post?: never;
@@ -2551,6 +2853,128 @@ interface paths {
2551
2853
  patch?: never;
2552
2854
  trace?: never;
2553
2855
  };
2856
+ "/v1/print-jobs/create-requests/{requestId}/approve-review": {
2857
+ parameters: {
2858
+ query?: never;
2859
+ header?: never;
2860
+ path?: never;
2861
+ cookie?: never;
2862
+ };
2863
+ get?: never;
2864
+ put?: never;
2865
+ /** Approve exactly the reported engine setting changes and re-slice */
2866
+ post: {
2867
+ parameters: {
2868
+ query?: never;
2869
+ header?: never;
2870
+ path: {
2871
+ requestId: string;
2872
+ };
2873
+ cookie?: never;
2874
+ };
2875
+ requestBody: {
2876
+ content: {
2877
+ "application/json": {
2878
+ changes: {
2879
+ key: string;
2880
+ sourceValue: (string | null) | string[] | number | boolean;
2881
+ engineValue: (string | null) | string[] | number | boolean;
2882
+ slots: number[];
2883
+ }[];
2884
+ sourceRelease: string | null;
2885
+ engineRelease: string;
2886
+ };
2887
+ };
2888
+ };
2889
+ responses: {
2890
+ /** @description Default Response */
2891
+ 202: {
2892
+ headers: {
2893
+ [name: string]: unknown;
2894
+ };
2895
+ content: {
2896
+ "application/json": {
2897
+ approved: boolean;
2898
+ };
2899
+ };
2900
+ };
2901
+ /** @description Default Response */
2902
+ 400: {
2903
+ headers: {
2904
+ [name: string]: unknown;
2905
+ };
2906
+ content: {
2907
+ "application/json": {
2908
+ error?: string;
2909
+ message?: string;
2910
+ requestId?: string;
2911
+ };
2912
+ };
2913
+ };
2914
+ /** @description Authentication required */
2915
+ 401: {
2916
+ headers: {
2917
+ [name: string]: unknown;
2918
+ };
2919
+ content: {
2920
+ "application/json": {
2921
+ error?: string;
2922
+ message?: string;
2923
+ requestId?: string;
2924
+ code?: string;
2925
+ statusCode?: number;
2926
+ };
2927
+ };
2928
+ };
2929
+ /** @description API key requires control scope */
2930
+ 403: {
2931
+ headers: {
2932
+ [name: string]: unknown;
2933
+ };
2934
+ content: {
2935
+ "application/json": {
2936
+ error?: string;
2937
+ message?: string;
2938
+ requestId?: string;
2939
+ code?: string;
2940
+ statusCode?: number;
2941
+ };
2942
+ };
2943
+ };
2944
+ /** @description Creation request not found */
2945
+ 404: {
2946
+ headers: {
2947
+ [name: string]: unknown;
2948
+ };
2949
+ content: {
2950
+ "application/json": {
2951
+ error?: string;
2952
+ message?: string;
2953
+ requestId?: string;
2954
+ };
2955
+ };
2956
+ };
2957
+ /** @description Creation request no longer supports this action */
2958
+ 409: {
2959
+ headers: {
2960
+ [name: string]: unknown;
2961
+ };
2962
+ content: {
2963
+ "application/json": {
2964
+ error?: string;
2965
+ message?: string;
2966
+ requestId?: string;
2967
+ };
2968
+ };
2969
+ };
2970
+ };
2971
+ };
2972
+ delete?: never;
2973
+ options?: never;
2974
+ head?: never;
2975
+ patch?: never;
2976
+ trace?: never;
2977
+ };
2554
2978
  "/v1/print-jobs/create-requests/{requestId}/cancel": {
2555
2979
  parameters: {
2556
2980
  query?: never;
@@ -2741,6 +3165,10 @@ interface paths {
2741
3165
  item: number;
2742
3166
  plateNumber: number;
2743
3167
  hold: {
3168
+ /** @enum {string} */
3169
+ code: "material_change_requires_qualification";
3170
+ slots: number[];
3171
+ } | {
2744
3172
  /** @enum {string} */
2745
3173
  code: "inspection_review_required";
2746
3174
  reason: string;
@@ -2761,6 +3189,14 @@ interface paths {
2761
3189
  /** @enum {string} */
2762
3190
  code: "project_review_required";
2763
3191
  detail: string;
3192
+ changes?: {
3193
+ key: string;
3194
+ sourceValue: (string | null) | string[] | number | boolean;
3195
+ engineValue: (string | null) | string[] | number | boolean;
3196
+ slots: number[];
3197
+ }[];
3198
+ sourceRelease?: string | null;
3199
+ engineRelease?: string;
2764
3200
  } | {
2765
3201
  /** @enum {string} */
2766
3202
  code: "preview_mismatch_after_remap";
@@ -2801,16 +3237,20 @@ interface paths {
2801
3237
  printerId: string;
2802
3238
  printerName: string;
2803
3239
  /** @enum {string} */
2804
- qualification: "bambu-p1s-0.4-standard-petg-v1";
3240
+ qualification?: "bambu-p1s-0.4-standard-petg-v1";
2805
3241
  /** @enum {string} */
2806
- printerModel: "P1S";
2807
- /** @enum {number} */
2808
- nozzleDiameterMm: 0.4;
3242
+ path?: "native" | "qualified";
3243
+ targetMachine?: {
3244
+ preset: string;
3245
+ model: string;
3246
+ nozzleDiameterMm: number;
3247
+ };
3248
+ printerModel: string;
3249
+ nozzleDiameterMm: number;
2809
3250
  /** @enum {string} */
2810
3251
  nozzleFlow: "standard";
2811
- /** @enum {string} */
2812
- buildSurface: "textured_pei";
2813
- profiles: {
3252
+ buildSurface: string;
3253
+ profiles?: {
2814
3254
  printer: {
2815
3255
  /** Format: uuid */
2816
3256
  catalogId: string;
@@ -2855,13 +3295,16 @@ interface paths {
2855
3295
  usedSlots: number[];
2856
3296
  materialMappings: {
2857
3297
  sourceSlot: number;
2858
- /** @enum {string} */
2859
- material: "PETG";
3298
+ material: string;
2860
3299
  color: string;
2861
3300
  /** @enum {string} */
2862
3301
  origin: "partner" | "inspection" | "placeholder";
2863
3302
  }[];
2864
3303
  holds: ({
3304
+ /** @enum {string} */
3305
+ code: "material_change_requires_qualification";
3306
+ slots: number[];
3307
+ } | {
2865
3308
  /** @enum {string} */
2866
3309
  code: "inspection_review_required";
2867
3310
  reason: string;
@@ -2882,6 +3325,14 @@ interface paths {
2882
3325
  /** @enum {string} */
2883
3326
  code: "project_review_required";
2884
3327
  detail: string;
3328
+ changes?: {
3329
+ key: string;
3330
+ sourceValue: (string | null) | string[] | number | boolean;
3331
+ engineValue: (string | null) | string[] | number | boolean;
3332
+ slots: number[];
3333
+ }[];
3334
+ sourceRelease?: string | null;
3335
+ engineRelease?: string;
2885
3336
  } | {
2886
3337
  /** @enum {string} */
2887
3338
  code: "preview_mismatch_after_remap";
@@ -2908,13 +3359,28 @@ interface paths {
2908
3359
  sourceSha256: string;
2909
3360
  plateNumber: number;
2910
3361
  /** @enum {string} */
2911
- qualification: "bambu-p1s-0.4-standard-petg-v1";
3362
+ qualification?: "bambu-p1s-0.4-standard-petg-v1";
2912
3363
  /** @enum {string} */
2913
- buildSurface: "textured_pei";
2914
- materialMappings: {
3364
+ path?: "native" | "qualified";
3365
+ sourceMachine?: {
3366
+ preset: string;
3367
+ model: string;
3368
+ nozzleDiameterMm: number;
3369
+ };
3370
+ materialQualifications?: {
2915
3371
  sourceSlot: number;
2916
3372
  /** @enum {string} */
2917
- material: "PETG";
3373
+ qualification: "bambu-p1s-0.4-standard-petg-v1";
3374
+ }[];
3375
+ targetMachine?: {
3376
+ preset: string;
3377
+ model: string;
3378
+ nozzleDiameterMm: number;
3379
+ };
3380
+ buildSurface: string;
3381
+ materialMappings: {
3382
+ sourceSlot: number;
3383
+ material: string;
2918
3384
  color: string;
2919
3385
  }[];
2920
3386
  engineSha256: string;
@@ -2934,15 +3400,34 @@ interface paths {
2934
3400
  omit: string[];
2935
3401
  };
2936
3402
  ignoredSettings: string[];
2937
- warnings: {
3403
+ warnings: ({
2938
3404
  /** @enum {string} */
2939
- code: "custom_instructions_kept" | "custom_instructions_replaced";
3405
+ code: "custom_instructions_kept";
2940
3406
  keys: string[];
2941
- }[];
3407
+ } | {
3408
+ /** @enum {string} */
3409
+ code: "custom_instructions_replaced";
3410
+ keys: string[];
3411
+ } | {
3412
+ /** @enum {string} */
3413
+ code: "preview_stale_after_remap";
3414
+ slots: number[];
3415
+ bedChanged: boolean;
3416
+ })[];
2942
3417
  engineFallback: {
2943
3418
  authoringVersion: string | null;
2944
3419
  selectedVersion: string;
2945
3420
  } | null;
3421
+ acceptedEngineSettingChanges?: {
3422
+ changes: {
3423
+ key: string;
3424
+ sourceValue: (string | null) | string[] | number | boolean;
3425
+ engineValue: (string | null) | string[] | number | boolean;
3426
+ slots: number[];
3427
+ }[];
3428
+ sourceRelease: string | null;
3429
+ engineRelease: string;
3430
+ };
2946
3431
  /** @enum {string} */
2947
3432
  preview: "source" | "engine" | "none";
2948
3433
  previewFile: string | null;
@@ -2970,6 +3455,10 @@ interface paths {
2970
3455
  item: number;
2971
3456
  plateNumber: number;
2972
3457
  hold: {
3458
+ /** @enum {string} */
3459
+ code: "material_change_requires_qualification";
3460
+ slots: number[];
3461
+ } | {
2973
3462
  /** @enum {string} */
2974
3463
  code: "inspection_review_required";
2975
3464
  reason: string;
@@ -2990,6 +3479,14 @@ interface paths {
2990
3479
  /** @enum {string} */
2991
3480
  code: "project_review_required";
2992
3481
  detail: string;
3482
+ changes?: {
3483
+ key: string;
3484
+ sourceValue: (string | null) | string[] | number | boolean;
3485
+ engineValue: (string | null) | string[] | number | boolean;
3486
+ slots: number[];
3487
+ }[];
3488
+ sourceRelease?: string | null;
3489
+ engineRelease?: string;
2993
3490
  } | {
2994
3491
  /** @enum {string} */
2995
3492
  code: "preview_mismatch_after_remap";
@@ -3030,16 +3527,20 @@ interface paths {
3030
3527
  printerId: string;
3031
3528
  printerName: string;
3032
3529
  /** @enum {string} */
3033
- qualification: "bambu-p1s-0.4-standard-petg-v1";
3530
+ qualification?: "bambu-p1s-0.4-standard-petg-v1";
3034
3531
  /** @enum {string} */
3035
- printerModel: "P1S";
3036
- /** @enum {number} */
3037
- nozzleDiameterMm: 0.4;
3532
+ path?: "native" | "qualified";
3533
+ targetMachine?: {
3534
+ preset: string;
3535
+ model: string;
3536
+ nozzleDiameterMm: number;
3537
+ };
3538
+ printerModel: string;
3539
+ nozzleDiameterMm: number;
3038
3540
  /** @enum {string} */
3039
3541
  nozzleFlow: "standard";
3040
- /** @enum {string} */
3041
- buildSurface: "textured_pei";
3042
- profiles: {
3542
+ buildSurface: string;
3543
+ profiles?: {
3043
3544
  printer: {
3044
3545
  /** Format: uuid */
3045
3546
  catalogId: string;
@@ -3084,13 +3585,16 @@ interface paths {
3084
3585
  usedSlots: number[];
3085
3586
  materialMappings: {
3086
3587
  sourceSlot: number;
3087
- /** @enum {string} */
3088
- material: "PETG";
3588
+ material: string;
3089
3589
  color: string;
3090
3590
  /** @enum {string} */
3091
3591
  origin: "partner" | "inspection" | "placeholder";
3092
3592
  }[];
3093
3593
  holds: ({
3594
+ /** @enum {string} */
3595
+ code: "material_change_requires_qualification";
3596
+ slots: number[];
3597
+ } | {
3094
3598
  /** @enum {string} */
3095
3599
  code: "inspection_review_required";
3096
3600
  reason: string;
@@ -3111,6 +3615,14 @@ interface paths {
3111
3615
  /** @enum {string} */
3112
3616
  code: "project_review_required";
3113
3617
  detail: string;
3618
+ changes?: {
3619
+ key: string;
3620
+ sourceValue: (string | null) | string[] | number | boolean;
3621
+ engineValue: (string | null) | string[] | number | boolean;
3622
+ slots: number[];
3623
+ }[];
3624
+ sourceRelease?: string | null;
3625
+ engineRelease?: string;
3114
3626
  } | {
3115
3627
  /** @enum {string} */
3116
3628
  code: "preview_mismatch_after_remap";
@@ -3137,13 +3649,28 @@ interface paths {
3137
3649
  sourceSha256: string;
3138
3650
  plateNumber: number;
3139
3651
  /** @enum {string} */
3140
- qualification: "bambu-p1s-0.4-standard-petg-v1";
3652
+ qualification?: "bambu-p1s-0.4-standard-petg-v1";
3141
3653
  /** @enum {string} */
3142
- buildSurface: "textured_pei";
3143
- materialMappings: {
3654
+ path?: "native" | "qualified";
3655
+ sourceMachine?: {
3656
+ preset: string;
3657
+ model: string;
3658
+ nozzleDiameterMm: number;
3659
+ };
3660
+ materialQualifications?: {
3144
3661
  sourceSlot: number;
3145
3662
  /** @enum {string} */
3146
- material: "PETG";
3663
+ qualification: "bambu-p1s-0.4-standard-petg-v1";
3664
+ }[];
3665
+ targetMachine?: {
3666
+ preset: string;
3667
+ model: string;
3668
+ nozzleDiameterMm: number;
3669
+ };
3670
+ buildSurface: string;
3671
+ materialMappings: {
3672
+ sourceSlot: number;
3673
+ material: string;
3147
3674
  color: string;
3148
3675
  }[];
3149
3676
  engineSha256: string;
@@ -3163,15 +3690,34 @@ interface paths {
3163
3690
  omit: string[];
3164
3691
  };
3165
3692
  ignoredSettings: string[];
3166
- warnings: {
3693
+ warnings: ({
3167
3694
  /** @enum {string} */
3168
- code: "custom_instructions_kept" | "custom_instructions_replaced";
3695
+ code: "custom_instructions_kept";
3169
3696
  keys: string[];
3170
- }[];
3697
+ } | {
3698
+ /** @enum {string} */
3699
+ code: "custom_instructions_replaced";
3700
+ keys: string[];
3701
+ } | {
3702
+ /** @enum {string} */
3703
+ code: "preview_stale_after_remap";
3704
+ slots: number[];
3705
+ bedChanged: boolean;
3706
+ })[];
3171
3707
  engineFallback: {
3172
3708
  authoringVersion: string | null;
3173
3709
  selectedVersion: string;
3174
3710
  } | null;
3711
+ acceptedEngineSettingChanges?: {
3712
+ changes: {
3713
+ key: string;
3714
+ sourceValue: (string | null) | string[] | number | boolean;
3715
+ engineValue: (string | null) | string[] | number | boolean;
3716
+ slots: number[];
3717
+ }[];
3718
+ sourceRelease: string | null;
3719
+ engineRelease: string;
3720
+ };
3175
3721
  /** @enum {string} */
3176
3722
  preview: "source" | "engine" | "none";
3177
3723
  previewFile: string | null;
@@ -3396,6 +3942,10 @@ interface paths {
3396
3942
  item: number;
3397
3943
  plateNumber: number;
3398
3944
  hold: {
3945
+ /** @enum {string} */
3946
+ code: "material_change_requires_qualification";
3947
+ slots: number[];
3948
+ } | {
3399
3949
  /** @enum {string} */
3400
3950
  code: "inspection_review_required";
3401
3951
  reason: string;
@@ -3416,6 +3966,14 @@ interface paths {
3416
3966
  /** @enum {string} */
3417
3967
  code: "project_review_required";
3418
3968
  detail: string;
3969
+ changes?: {
3970
+ key: string;
3971
+ sourceValue: (string | null) | string[] | number | boolean;
3972
+ engineValue: (string | null) | string[] | number | boolean;
3973
+ slots: number[];
3974
+ }[];
3975
+ sourceRelease?: string | null;
3976
+ engineRelease?: string;
3419
3977
  } | {
3420
3978
  /** @enum {string} */
3421
3979
  code: "preview_mismatch_after_remap";
@@ -3456,16 +4014,20 @@ interface paths {
3456
4014
  printerId: string;
3457
4015
  printerName: string;
3458
4016
  /** @enum {string} */
3459
- qualification: "bambu-p1s-0.4-standard-petg-v1";
4017
+ qualification?: "bambu-p1s-0.4-standard-petg-v1";
3460
4018
  /** @enum {string} */
3461
- printerModel: "P1S";
3462
- /** @enum {number} */
3463
- nozzleDiameterMm: 0.4;
4019
+ path?: "native" | "qualified";
4020
+ targetMachine?: {
4021
+ preset: string;
4022
+ model: string;
4023
+ nozzleDiameterMm: number;
4024
+ };
4025
+ printerModel: string;
4026
+ nozzleDiameterMm: number;
3464
4027
  /** @enum {string} */
3465
4028
  nozzleFlow: "standard";
3466
- /** @enum {string} */
3467
- buildSurface: "textured_pei";
3468
- profiles: {
4029
+ buildSurface: string;
4030
+ profiles?: {
3469
4031
  printer: {
3470
4032
  /** Format: uuid */
3471
4033
  catalogId: string;
@@ -3510,13 +4072,16 @@ interface paths {
3510
4072
  usedSlots: number[];
3511
4073
  materialMappings: {
3512
4074
  sourceSlot: number;
3513
- /** @enum {string} */
3514
- material: "PETG";
4075
+ material: string;
3515
4076
  color: string;
3516
4077
  /** @enum {string} */
3517
4078
  origin: "partner" | "inspection" | "placeholder";
3518
4079
  }[];
3519
4080
  holds: ({
4081
+ /** @enum {string} */
4082
+ code: "material_change_requires_qualification";
4083
+ slots: number[];
4084
+ } | {
3520
4085
  /** @enum {string} */
3521
4086
  code: "inspection_review_required";
3522
4087
  reason: string;
@@ -3537,6 +4102,14 @@ interface paths {
3537
4102
  /** @enum {string} */
3538
4103
  code: "project_review_required";
3539
4104
  detail: string;
4105
+ changes?: {
4106
+ key: string;
4107
+ sourceValue: (string | null) | string[] | number | boolean;
4108
+ engineValue: (string | null) | string[] | number | boolean;
4109
+ slots: number[];
4110
+ }[];
4111
+ sourceRelease?: string | null;
4112
+ engineRelease?: string;
3540
4113
  } | {
3541
4114
  /** @enum {string} */
3542
4115
  code: "preview_mismatch_after_remap";
@@ -3563,13 +4136,28 @@ interface paths {
3563
4136
  sourceSha256: string;
3564
4137
  plateNumber: number;
3565
4138
  /** @enum {string} */
3566
- qualification: "bambu-p1s-0.4-standard-petg-v1";
4139
+ qualification?: "bambu-p1s-0.4-standard-petg-v1";
3567
4140
  /** @enum {string} */
3568
- buildSurface: "textured_pei";
3569
- materialMappings: {
4141
+ path?: "native" | "qualified";
4142
+ sourceMachine?: {
4143
+ preset: string;
4144
+ model: string;
4145
+ nozzleDiameterMm: number;
4146
+ };
4147
+ materialQualifications?: {
3570
4148
  sourceSlot: number;
3571
4149
  /** @enum {string} */
3572
- material: "PETG";
4150
+ qualification: "bambu-p1s-0.4-standard-petg-v1";
4151
+ }[];
4152
+ targetMachine?: {
4153
+ preset: string;
4154
+ model: string;
4155
+ nozzleDiameterMm: number;
4156
+ };
4157
+ buildSurface: string;
4158
+ materialMappings: {
4159
+ sourceSlot: number;
4160
+ material: string;
3573
4161
  color: string;
3574
4162
  }[];
3575
4163
  engineSha256: string;
@@ -3589,15 +4177,34 @@ interface paths {
3589
4177
  omit: string[];
3590
4178
  };
3591
4179
  ignoredSettings: string[];
3592
- warnings: {
4180
+ warnings: ({
3593
4181
  /** @enum {string} */
3594
- code: "custom_instructions_kept" | "custom_instructions_replaced";
4182
+ code: "custom_instructions_kept";
3595
4183
  keys: string[];
3596
- }[];
4184
+ } | {
4185
+ /** @enum {string} */
4186
+ code: "custom_instructions_replaced";
4187
+ keys: string[];
4188
+ } | {
4189
+ /** @enum {string} */
4190
+ code: "preview_stale_after_remap";
4191
+ slots: number[];
4192
+ bedChanged: boolean;
4193
+ })[];
3597
4194
  engineFallback: {
3598
4195
  authoringVersion: string | null;
3599
4196
  selectedVersion: string;
3600
4197
  } | null;
4198
+ acceptedEngineSettingChanges?: {
4199
+ changes: {
4200
+ key: string;
4201
+ sourceValue: (string | null) | string[] | number | boolean;
4202
+ engineValue: (string | null) | string[] | number | boolean;
4203
+ slots: number[];
4204
+ }[];
4205
+ sourceRelease: string | null;
4206
+ engineRelease: string;
4207
+ };
3601
4208
  /** @enum {string} */
3602
4209
  preview: "source" | "engine" | "none";
3603
4210
  previewFile: string | null;
@@ -3933,6 +4540,195 @@ interface paths {
3933
4540
  patch?: never;
3934
4541
  trace?: never;
3935
4542
  };
4543
+ "/v1/filament-catalog": {
4544
+ parameters: {
4545
+ query?: never;
4546
+ header?: never;
4547
+ path?: never;
4548
+ cookie?: never;
4549
+ };
4550
+ /** List organization catalog filaments */
4551
+ get: {
4552
+ parameters: {
4553
+ query?: {
4554
+ externalId?: string;
4555
+ sku?: string;
4556
+ limit?: number;
4557
+ offset?: number;
4558
+ };
4559
+ header?: never;
4560
+ path?: never;
4561
+ cookie?: never;
4562
+ };
4563
+ requestBody?: never;
4564
+ responses: {
4565
+ /** @description Default Response */
4566
+ 200: {
4567
+ headers: {
4568
+ [name: string]: unknown;
4569
+ };
4570
+ content?: never;
4571
+ };
4572
+ };
4573
+ };
4574
+ put?: never;
4575
+ /** Upsert an organization catalog filament by partner external id */
4576
+ post: {
4577
+ parameters: {
4578
+ query?: never;
4579
+ header?: never;
4580
+ path?: never;
4581
+ cookie?: never;
4582
+ };
4583
+ requestBody: {
4584
+ content: {
4585
+ "application/json": {
4586
+ externalId: string;
4587
+ brand: string;
4588
+ material: string;
4589
+ colorName: string;
4590
+ colorHex?: string;
4591
+ hex?: string;
4592
+ sku: string;
4593
+ replacementFilamentId?: string | null;
4594
+ };
4595
+ };
4596
+ };
4597
+ responses: {
4598
+ /** @description Default Response */
4599
+ 200: {
4600
+ headers: {
4601
+ [name: string]: unknown;
4602
+ };
4603
+ content?: never;
4604
+ };
4605
+ };
4606
+ };
4607
+ delete?: never;
4608
+ options?: never;
4609
+ head?: never;
4610
+ patch?: never;
4611
+ trace?: never;
4612
+ };
4613
+ "/v1/filament-catalog/{id}": {
4614
+ parameters: {
4615
+ query?: never;
4616
+ header?: never;
4617
+ path?: never;
4618
+ cookie?: never;
4619
+ };
4620
+ /** Read an organization catalog filament */
4621
+ get: {
4622
+ parameters: {
4623
+ query?: never;
4624
+ header?: never;
4625
+ path: {
4626
+ id: string;
4627
+ };
4628
+ cookie?: never;
4629
+ };
4630
+ requestBody?: never;
4631
+ responses: {
4632
+ /** @description Default Response */
4633
+ 200: {
4634
+ headers: {
4635
+ [name: string]: unknown;
4636
+ };
4637
+ content?: never;
4638
+ };
4639
+ };
4640
+ };
4641
+ put?: never;
4642
+ post?: never;
4643
+ delete?: never;
4644
+ options?: never;
4645
+ head?: never;
4646
+ patch?: never;
4647
+ trace?: never;
4648
+ };
4649
+ }
4650
+
4651
+ type PrintHiveOptions = {
4652
+ apiKey: string;
4653
+ baseUrl?: string;
4654
+ fetch?: typeof globalThis.fetch;
4655
+ timeoutMs?: number;
4656
+ maxRetries?: number;
4657
+ };
4658
+ type Request<T> = {
4659
+ path: string;
4660
+ decode: (response: Response) => Promise<T>;
4661
+ query?: URLSearchParams;
4662
+ signal?: AbortSignal;
4663
+ } & ({
4664
+ method: "GET";
4665
+ } | {
4666
+ method: "POST";
4667
+ body: () => Promise<BodyInit>;
4668
+ size?: number;
4669
+ contentType?: string | null;
4670
+ idempotencyKey: string;
4671
+ replayable: boolean;
4672
+ });
4673
+ declare class Transport {
4674
+ private readonly options;
4675
+ constructor(options: PrintHiveOptions);
4676
+ request<T>(request: Request<T>): Promise<T>;
4677
+ }
4678
+
4679
+ type PrinterSearchResponse = paths["/v1/printers/search"]["get"]["responses"][200]["content"]["application/json"];
4680
+ type FilamentSearchResponse = paths["/v1/filaments/search"]["get"]["responses"][200]["content"]["application/json"];
4681
+ type PrinterSearchPage = PrinterSearchResponse;
4682
+ type PrinterSearchResult = PrinterSearchPage["printers"][number];
4683
+ type FilamentSearchPage = FilamentSearchResponse;
4684
+ type FilamentSearchResult = FilamentSearchPage["filaments"][number];
4685
+ type SearchOptions = {
4686
+ query: string;
4687
+ limit?: number;
4688
+ offset?: number;
4689
+ signal?: AbortSignal;
4690
+ };
4691
+
4692
+ type CatalogFilamentInput = {
4693
+ externalId: string;
4694
+ brand: string;
4695
+ material: string;
4696
+ colorName: string;
4697
+ sku: string;
4698
+ replacementFilamentId?: string | null;
4699
+ } & ({
4700
+ colorHex: string;
4701
+ hex?: string;
4702
+ } | {
4703
+ hex: string;
4704
+ colorHex?: string;
4705
+ });
4706
+ type CatalogFilament = {
4707
+ id: string;
4708
+ sku: string;
4709
+ organization_id: string;
4710
+ material_type: string;
4711
+ color: string;
4712
+ metadata: {
4713
+ externalId: string;
4714
+ colorName: string;
4715
+ replacementFilamentId: string | null;
4716
+ };
4717
+ };
4718
+ declare class FilamentCatalog {
4719
+ private readonly transport;
4720
+ constructor(transport: Transport);
4721
+ upsert(input: CatalogFilamentInput): Promise<CatalogFilament>;
4722
+ list(input?: {
4723
+ externalId?: string;
4724
+ sku?: string;
4725
+ limit?: number;
4726
+ offset?: number;
4727
+ }): Promise<{
4728
+ materials: CatalogFilament[];
4729
+ total: number;
4730
+ }>;
4731
+ get(id: string): Promise<CatalogFilament>;
3936
4732
  }
3937
4733
 
3938
4734
  type CreateOperation = paths["/v1/print-jobs/create"]["post"];
@@ -3942,6 +4738,7 @@ type JobReadResponse = paths["/v1/print-jobs/{id}"]["get"]["responses"][200]["co
3942
4738
  type JobFields = NonNullable<JobReadResponse["job"]>;
3943
4739
  type PrintJob = JobFields & Required<Pick<JobFields, "id" | "status">>;
3944
4740
  type PrintJobCreateRequest = paths["/v1/print-jobs/create-requests/{requestId}"]["get"]["responses"][200]["content"]["application/json"];
4741
+ type EngineSettingReviewApproval = paths["/v1/print-jobs/create-requests/{requestId}/approve-review"]["post"]["requestBody"]["content"]["application/json"];
3945
4742
  type JsonPrintJobInput = CreateOperation["requestBody"]["content"]["application/json"] & {
3946
4743
  idempotencyKey?: string;
3947
4744
  };
@@ -3965,6 +4762,9 @@ declare class PrintJobs {
3965
4762
  idempotencyKey: string;
3966
4763
  }>;
3967
4764
  getCreateRequest(requestId: string, signal?: AbortSignal): Promise<PrintJobCreateRequest>;
4765
+ approveReview(requestId: string, review: EngineSettingReviewApproval, signal?: AbortSignal): Promise<{
4766
+ approved: boolean;
4767
+ }>;
3968
4768
  waitUntilCreated(requestId: string, options?: WaitOptions): Promise<{
3969
4769
  requestId: string;
3970
4770
  status: "preparing" | "held" | "created" | "failed" | "cancelled";
@@ -3978,9 +4778,14 @@ declare class PrintJobs {
3978
4778
  print_options: ({
3979
4779
  filament_route_state?: "waiting" | "resolved";
3980
4780
  filament_waiting_reasons?: {
4781
+ filamentId?: string;
4782
+ brand?: string | null;
4783
+ name?: string;
4784
+ colorName?: string | null;
4785
+ material?: string;
4786
+ colorHex?: string;
3981
4787
  code: "filament_not_loaded" | "material_route_changed";
3982
4788
  sourceSlot?: number;
3983
- material?: string;
3984
4789
  color?: string;
3985
4790
  cause?: "slot_empty" | "missing_material" | "color_distance" | "slot_conflict";
3986
4791
  suggestedTargetSlot?: {
@@ -3994,9 +4799,58 @@ declare class PrintJobs {
3994
4799
  } & {
3995
4800
  [key: string]: unknown;
3996
4801
  }) | null;
3997
- requiredActions: {
4802
+ requiredActions: (({
4803
+ item: number;
4804
+ plateNumber: number;
4805
+ hold: {
4806
+ code: "material_change_requires_qualification";
4807
+ slots: number[];
4808
+ } | {
4809
+ code: "inspection_review_required";
4810
+ reason: string;
4811
+ } | {
4812
+ code: "unmapped_used_slot";
4813
+ slots: number[];
4814
+ } | {
4815
+ code: "project_source_too_large";
4816
+ limit: {
4817
+ name: "projectSourceBytes";
4818
+ max: number;
4819
+ observed: number;
4820
+ };
4821
+ } | {
4822
+ code: "project_review_required";
4823
+ detail: string;
4824
+ changes?: {
4825
+ key: string;
4826
+ sourceValue: (string | null) | string[] | number | boolean;
4827
+ engineValue: (string | null) | string[] | number | boolean;
4828
+ slots: number[];
4829
+ }[];
4830
+ sourceRelease?: string | null;
4831
+ engineRelease?: string;
4832
+ } | {
4833
+ code: "preview_mismatch_after_remap";
4834
+ detail: string;
4835
+ };
4836
+ } & {
3998
4837
  [key: string]: unknown;
3999
- }[];
4838
+ }) | ({
4839
+ code: string;
4840
+ } & {
4841
+ [key: string]: unknown;
4842
+ }))[];
4843
+ warnings: ({
4844
+ code: "custom_instructions_kept";
4845
+ keys: string[];
4846
+ } | {
4847
+ code: "custom_instructions_replaced";
4848
+ keys: string[];
4849
+ } | {
4850
+ code: "preview_stale_after_remap";
4851
+ slots: number[];
4852
+ bedChanged: boolean;
4853
+ })[];
4000
4854
  error: {
4001
4855
  [key: string]: unknown;
4002
4856
  } | null;
@@ -4153,6 +5007,16 @@ declare class PrintHive {
4153
5007
  status: "missing";
4154
5008
  };
4155
5009
  printerModel?: string;
5010
+ machine?: {
5011
+ sourceMachine: {
5012
+ preset: string;
5013
+ model: string;
5014
+ nozzleDiameterMm: number;
5015
+ };
5016
+ compatibleMachines: string[];
5017
+ materials: string[];
5018
+ bed: string;
5019
+ };
4156
5020
  };
4157
5021
  } | {
4158
5022
  sourceVersionId: string;
@@ -4219,6 +5083,16 @@ declare class PrintHive {
4219
5083
  status: "missing";
4220
5084
  };
4221
5085
  printerModel?: string;
5086
+ machine?: {
5087
+ sourceMachine: {
5088
+ preset: string;
5089
+ model: string;
5090
+ nozzleDiameterMm: number;
5091
+ };
5092
+ compatibleMachines: string[];
5093
+ materials: string[];
5094
+ bed: string;
5095
+ };
4222
5096
  } | null;
4223
5097
  error: {
4224
5098
  code: "invalid_archive" | "unsafe_path" | "unsafe_xml" | "resource_limit" | "invalid_project" | "toolpath_only" | "processing_timeout" | "storage_object_changed" | "inspection_interrupted" | "upload_interrupted";
@@ -4324,6 +5198,16 @@ declare class PrintHive {
4324
5198
  status: "missing";
4325
5199
  };
4326
5200
  printerModel?: string;
5201
+ machine?: {
5202
+ sourceMachine: {
5203
+ preset: string;
5204
+ model: string;
5205
+ nozzleDiameterMm: number;
5206
+ };
5207
+ compatibleMachines: string[];
5208
+ materials: string[];
5209
+ bed: string;
5210
+ };
4327
5211
  };
4328
5212
  } | {
4329
5213
  sourceVersionId: string;
@@ -4390,6 +5274,16 @@ declare class PrintHive {
4390
5274
  status: "missing";
4391
5275
  };
4392
5276
  printerModel?: string;
5277
+ machine?: {
5278
+ sourceMachine: {
5279
+ preset: string;
5280
+ model: string;
5281
+ nozzleDiameterMm: number;
5282
+ };
5283
+ compatibleMachines: string[];
5284
+ materials: string[];
5285
+ bed: string;
5286
+ };
4393
5287
  } | null;
4394
5288
  error: {
4395
5289
  code: "invalid_archive" | "unsafe_path" | "unsafe_xml" | "resource_limit" | "invalid_project" | "toolpath_only" | "processing_timeout" | "storage_object_changed" | "inspection_interrupted" | "upload_interrupted";
@@ -4405,6 +5299,20 @@ declare class PrintHive {
4405
5299
  listSourceFiles(modelId: string): AsyncGenerator<PartnerSource>;
4406
5300
  };
4407
5301
  readonly printers: {
5302
+ search: (input: SearchOptions) => Promise<{
5303
+ printers: {
5304
+ id: string;
5305
+ name: string;
5306
+ model: string;
5307
+ serial_number: string;
5308
+ status: string;
5309
+ location_text: string;
5310
+ score: number;
5311
+ match: "text" | "typo" | "server";
5312
+ }[];
5313
+ total: number;
5314
+ query: string;
5315
+ }>;
4408
5316
  list: (input?: {
4409
5317
  limit?: number;
4410
5318
  cursor?: string;
@@ -4413,6 +5321,27 @@ declare class PrintHive {
4413
5321
  };
4414
5322
  readonly printJobs: PrintJobs;
4415
5323
  readonly filamentCatalog: FilamentCatalog;
5324
+ readonly filaments: {
5325
+ search: (input: SearchOptions) => Promise<{
5326
+ filaments: {
5327
+ id: string;
5328
+ filamentId: string;
5329
+ acceptedByCreate: boolean;
5330
+ name: string;
5331
+ brand: null | string;
5332
+ material_type: string;
5333
+ color: null | string;
5334
+ diameter: null | number;
5335
+ category: "filament";
5336
+ sku?: null | string;
5337
+ organization_id: null | string;
5338
+ }[];
5339
+ total: number;
5340
+ hasMore: boolean;
5341
+ matchMode: "strict" | "broadened";
5342
+ originalQuery: null | string;
5343
+ }>;
5344
+ };
4416
5345
  readonly preparations: {
4417
5346
  get: (id: string, signal?: AbortSignal) => Promise<{
4418
5347
  preparationId: string;
@@ -4422,6 +5351,9 @@ declare class PrintHive {
4422
5351
  item: number;
4423
5352
  plateNumber: number;
4424
5353
  hold: {
5354
+ code: "material_change_requires_qualification";
5355
+ slots: number[];
5356
+ } | {
4425
5357
  code: "inspection_review_required";
4426
5358
  reason: string;
4427
5359
  } | {
@@ -4437,6 +5369,14 @@ declare class PrintHive {
4437
5369
  } | {
4438
5370
  code: "project_review_required";
4439
5371
  detail: string;
5372
+ changes?: {
5373
+ key: string;
5374
+ sourceValue: (string | null) | string[] | number | boolean;
5375
+ engineValue: (string | null) | string[] | number | boolean;
5376
+ slots: number[];
5377
+ }[];
5378
+ sourceRelease?: string | null;
5379
+ engineRelease?: string;
4440
5380
  } | {
4441
5381
  code: "preview_mismatch_after_remap";
4442
5382
  detail: string;
@@ -4471,12 +5411,18 @@ declare class PrintHive {
4471
5411
  target: {
4472
5412
  printerId: string;
4473
5413
  printerName: string;
4474
- qualification: "bambu-p1s-0.4-standard-petg-v1";
4475
- printerModel: "P1S";
4476
- nozzleDiameterMm: 0.4;
5414
+ qualification?: "bambu-p1s-0.4-standard-petg-v1";
5415
+ path?: "native" | "qualified";
5416
+ targetMachine?: {
5417
+ preset: string;
5418
+ model: string;
5419
+ nozzleDiameterMm: number;
5420
+ };
5421
+ printerModel: string;
5422
+ nozzleDiameterMm: number;
4477
5423
  nozzleFlow: "standard";
4478
- buildSurface: "textured_pei";
4479
- profiles: {
5424
+ buildSurface: string;
5425
+ profiles?: {
4480
5426
  printer: {
4481
5427
  catalogId: string;
4482
5428
  name: string;
@@ -4513,11 +5459,14 @@ declare class PrintHive {
4513
5459
  usedSlots: number[];
4514
5460
  materialMappings: {
4515
5461
  sourceSlot: number;
4516
- material: "PETG";
5462
+ material: string;
4517
5463
  color: string;
4518
5464
  origin: "partner" | "inspection" | "placeholder";
4519
5465
  }[];
4520
5466
  holds: ({
5467
+ code: "material_change_requires_qualification";
5468
+ slots: number[];
5469
+ } | {
4521
5470
  code: "inspection_review_required";
4522
5471
  reason: string;
4523
5472
  } | {
@@ -4533,6 +5482,14 @@ declare class PrintHive {
4533
5482
  } | {
4534
5483
  code: "project_review_required";
4535
5484
  detail: string;
5485
+ changes?: {
5486
+ key: string;
5487
+ sourceValue: (string | null) | string[] | number | boolean;
5488
+ engineValue: (string | null) | string[] | number | boolean;
5489
+ slots: number[];
5490
+ }[];
5491
+ sourceRelease?: string | null;
5492
+ engineRelease?: string;
4536
5493
  } | {
4537
5494
  code: "preview_mismatch_after_remap";
4538
5495
  detail: string;
@@ -4554,11 +5511,26 @@ declare class PrintHive {
4554
5511
  sourceVersionId: string;
4555
5512
  sourceSha256: string;
4556
5513
  plateNumber: number;
4557
- qualification: "bambu-p1s-0.4-standard-petg-v1";
4558
- buildSurface: "textured_pei";
5514
+ qualification?: "bambu-p1s-0.4-standard-petg-v1";
5515
+ path?: "native" | "qualified";
5516
+ sourceMachine?: {
5517
+ preset: string;
5518
+ model: string;
5519
+ nozzleDiameterMm: number;
5520
+ };
5521
+ materialQualifications?: {
5522
+ sourceSlot: number;
5523
+ qualification: "bambu-p1s-0.4-standard-petg-v1";
5524
+ }[];
5525
+ targetMachine?: {
5526
+ preset: string;
5527
+ model: string;
5528
+ nozzleDiameterMm: number;
5529
+ };
5530
+ buildSurface: string;
4559
5531
  materialMappings: {
4560
5532
  sourceSlot: number;
4561
- material: "PETG";
5533
+ material: string;
4562
5534
  color: string;
4563
5535
  }[];
4564
5536
  engineSha256: string;
@@ -4578,14 +5550,31 @@ declare class PrintHive {
4578
5550
  omit: string[];
4579
5551
  };
4580
5552
  ignoredSettings: string[];
4581
- warnings: {
4582
- code: "custom_instructions_kept" | "custom_instructions_replaced";
5553
+ warnings: ({
5554
+ code: "custom_instructions_kept";
4583
5555
  keys: string[];
4584
- }[];
5556
+ } | {
5557
+ code: "custom_instructions_replaced";
5558
+ keys: string[];
5559
+ } | {
5560
+ code: "preview_stale_after_remap";
5561
+ slots: number[];
5562
+ bedChanged: boolean;
5563
+ })[];
4585
5564
  engineFallback: {
4586
5565
  authoringVersion: string | null;
4587
5566
  selectedVersion: string;
4588
5567
  } | null;
5568
+ acceptedEngineSettingChanges?: {
5569
+ changes: {
5570
+ key: string;
5571
+ sourceValue: (string | null) | string[] | number | boolean;
5572
+ engineValue: (string | null) | string[] | number | boolean;
5573
+ slots: number[];
5574
+ }[];
5575
+ sourceRelease: string | null;
5576
+ engineRelease: string;
5577
+ };
4589
5578
  preview: "source" | "engine" | "none";
4590
5579
  previewFile: string | null;
4591
5580
  finalArtifactSha256: string;
@@ -4608,4 +5597,4 @@ declare class PrintHive {
4608
5597
  constructor(options: PrintHiveOptions);
4609
5598
  }
4610
5599
 
4611
- export { type ApiErrorBody, type ApiLimit, type CatalogFilament, type CatalogFilamentInput, type CreatedPrintJob, type FilamentWaitingReason, type JsonPrintJobInput, type PartnerMaterialMapping, type PartnerModel, type PartnerPreparation, type PartnerPreparationCreateBody, type PartnerPreparationDownload, type PartnerPreparationErrorBody, type PartnerPreparationItemInput, type PartnerPreparationTargetReason, type PartnerPreparedPlate, type PartnerSource, type PreparationCreateOptions, PrintHive, PrintHiveApiError, PrintHiveNetworkError, type PrintHiveOptions, type PrintJob, type PrintJobCreateRequest, PrintJobCreateStoppedError, type SettledPreparation, type UploadOptions, type UploadedPrintJobInput, type WaitOptions, type paths };
5600
+ export { type ApiErrorBody, type ApiLimit, type CatalogFilament, type CatalogFilamentInput, type CreatedPrintJob, type EngineSettingReviewApproval, type FilamentSearchPage, type FilamentSearchResult, type FilamentWaitingReason, type JsonPrintJobInput, type PartnerMaterialMapping, type PartnerModel, type PartnerPreparation, type PartnerPreparationCreateBody, type PartnerPreparationDownload, type PartnerPreparationErrorBody, type PartnerPreparationItemInput, type PartnerPreparationTargetReason, type PartnerPreparedPlate, type PartnerSource, type PreparationCreateOptions, PrintHive, PrintHiveApiError, PrintHiveNetworkError, type PrintHiveOptions, type PrintJob, type PrintJobCreateRequest, PrintJobCreateStoppedError, type PrinterSearchPage, type PrinterSearchResult, type SearchOptions, type SettledPreparation, type UploadOptions, type UploadedPrintJobInput, type WaitOptions, type paths };