tcgpriser 0.2.0 → 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.
Files changed (3) hide show
  1. package/dist/index.d.cts +1964 -2407
  2. package/dist/index.d.ts +1964 -2407
  3. package/package.json +2 -2
package/dist/index.d.cts CHANGED
@@ -27,9 +27,12 @@ declare class HttpClient {
27
27
  patch<T>(path: string, body: unknown, requestOptions?: PremiumOptions): Promise<T>;
28
28
  private request;
29
29
  }
30
-
31
30
  interface components {
32
31
  schemas: {
32
+ AlternativeName: {
33
+ name: string;
34
+ shortName: string | undefined;
35
+ };
33
36
  ApiError: {
34
37
  error: {
35
38
  /** @enum {string} */
@@ -39,100 +42,142 @@ interface components {
39
42
  };
40
43
  };
41
44
  BargainListResponse: {
42
- data: {
43
- url: string;
44
- /** @example 149.5 */
45
- price: number | undefined;
46
- /**
47
- * @description ISO-4217 currency code
48
- * @example SEK
49
- */
50
- currency: string | undefined;
51
- shop: {
52
- /** @example cardlevels */
53
- technicalName: string;
54
- /** @example Cardlevels */
55
- name: string;
56
- };
57
- inStock: boolean;
45
+ data: components["schemas"]["BargainListing"][];
46
+ pagination: components["schemas"]["PageMeta"];
47
+ };
48
+ BargainListing: {
49
+ url: string;
50
+ /** @example 149.5 */
51
+ price: number | undefined;
52
+ /**
53
+ * @description ISO-4217 currency code
54
+ * @example SEK
55
+ */
56
+ currency: string | undefined;
57
+ shop: components["schemas"]["ShopRef"];
58
+ inStock: boolean;
59
+ /**
60
+ * Format: date-time
61
+ * @example 2026-07-15T12:03:29.322Z
62
+ */
63
+ matchedAt: string;
64
+ product: {
58
65
  /**
59
- * Format: date-time
60
- * @example 2026-07-15T12:03:29.322Z
66
+ * @description Resource identifier
67
+ * @example 6a577711abc1ce71383d3e10
61
68
  */
62
- matchedAt: string;
63
- product: {
64
- /**
65
- * @description Resource identifier
66
- * @example 6a577711abc1ce71383d3e10
67
- */
68
- id: string;
69
- /** @enum {string} */
70
- kind: "sealed" | "card";
71
- name: string;
72
- technicalName: string;
73
- imageUrl: string | undefined;
74
- };
75
- bargain: {
76
- discountPercent: number;
77
- /** @enum {string} */
78
- referenceSource: "retail" | "tradera" | "cardmarket";
79
- };
80
- }[];
81
- pagination: {
82
- /** @description Total matching records, ignoring pagination */
83
- total: number;
84
- limit: number;
85
- skip: number;
86
- hasMore: boolean;
69
+ id: string;
70
+ /** @enum {string} */
71
+ kind: "sealed" | "card";
72
+ name: string;
73
+ technicalName: string;
74
+ imageUrl: string | undefined;
75
+ };
76
+ bargain: {
77
+ discountPercent: number;
78
+ /** @enum {string} */
79
+ referenceSource: "retail" | "tradera" | "cardmarket";
87
80
  };
88
81
  };
89
82
  BargainSearchResponse: {
90
- data: {
91
- url: string;
92
- /** @example 149.5 */
93
- price: number | undefined;
94
- /**
95
- * @description ISO-4217 currency code
96
- * @example SEK
97
- */
98
- currency: string | undefined;
99
- shop: {
100
- /** @example cardlevels */
101
- technicalName: string;
102
- /** @example Cardlevels */
103
- name: string;
104
- };
105
- inStock: boolean;
106
- /**
107
- * Format: date-time
108
- * @example 2026-07-15T12:03:29.322Z
109
- */
110
- matchedAt: string;
111
- product: {
112
- /**
113
- * @description Resource identifier
114
- * @example 6a577711abc1ce71383d3e10
115
- */
116
- id: string;
117
- /** @enum {string} */
118
- kind: "sealed" | "card";
119
- name: string;
120
- technicalName: string;
121
- imageUrl: string | undefined;
122
- };
123
- bargain: {
124
- discountPercent: number;
125
- /** @enum {string} */
126
- referenceSource: "retail" | "tradera" | "cardmarket";
127
- };
128
- }[];
129
- pagination: {
130
- /** @description Total matching records, ignoring pagination */
131
- total: number;
132
- limit: number;
133
- skip: number;
134
- hasMore: boolean;
135
- };
83
+ data: components["schemas"]["BargainListing"][];
84
+ pagination: components["schemas"]["PageMeta"];
85
+ };
86
+ Brand: {
87
+ /**
88
+ * @description Resource identifier
89
+ * @example 6a577711abc1ce71383d3e10
90
+ */
91
+ id: string;
92
+ /** @example Pokémon */
93
+ name: string;
94
+ /** @example pokemon */
95
+ technicalName: string;
96
+ /**
97
+ * Format: date-time
98
+ * @example 2026-07-15T12:03:29.322Z
99
+ */
100
+ createdAt: string;
101
+ /**
102
+ * Format: date-time
103
+ * @example 2026-07-15T12:03:29.322Z
104
+ */
105
+ updatedAt: string;
106
+ };
107
+ Card: {
108
+ /**
109
+ * @description Resource identifier
110
+ * @example 6a577711abc1ce71383d3e10
111
+ */
112
+ id: string;
113
+ name: string;
114
+ shortName: string | undefined;
115
+ technicalName: string;
116
+ brand: components["schemas"]["Brand"];
117
+ manufacturer: string;
118
+ modelNumber: string | undefined;
119
+ category: components["schemas"]["CategoryRef"] | undefined;
120
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
121
+ /**
122
+ * @description Printing language of the item
123
+ * @example JPN
124
+ * @enum {string|null}
125
+ */
126
+ language: "ENG" | "JPN" | "CHI" | undefined;
127
+ alternativeNames: components["schemas"]["AlternativeName"][];
128
+ supportsMultipackPricing: boolean;
129
+ /**
130
+ * @description Absolute asset URL, or null when absent
131
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
132
+ */
133
+ imageUrl: string | undefined;
134
+ /**
135
+ * @description Cheapest current shop price, in SEK
136
+ * @example 149.5
137
+ */
138
+ retailPrice: number | undefined;
139
+ /**
140
+ * @description Estimated market value, in SEK
141
+ * @example 149.5
142
+ */
143
+ estimatedValue: number | undefined;
144
+ /** @description Active shops currently tracking this item */
145
+ shopCount: number;
146
+ /** @description Observations the estimate rests on */
147
+ pricingDataPoints: number;
148
+ /**
149
+ * Format: date-time
150
+ * @example 2026-07-15T12:03:29.322Z
151
+ */
152
+ pricingUpdatedAt: string | undefined;
153
+ /**
154
+ * Format: date-time
155
+ * @example 2026-07-15T12:03:29.322Z
156
+ */
157
+ createdAt: string;
158
+ /**
159
+ * Format: date-time
160
+ * @example 2026-07-15T12:03:29.322Z
161
+ */
162
+ updatedAt: string;
163
+ /** @enum {string} */
164
+ kind: "card";
165
+ /** @example 4/102 */
166
+ cardNumber: string;
167
+ /** @example Rare Holo */
168
+ rarity: string | undefined;
169
+ artist: string | undefined;
170
+ cardmarketId: string | undefined;
171
+ tcgplayerId: string | undefined;
172
+ variants: components["schemas"]["CardVariants"] | undefined;
173
+ prisjaktId: string | undefined;
174
+ };
175
+ CardVariants: {
176
+ normal: boolean;
177
+ holo: boolean;
178
+ reverse: boolean;
179
+ firstEdition: boolean;
180
+ wPromo: boolean;
136
181
  };
137
182
  CardWithPricing: {
138
183
  /**
@@ -143,95 +188,18 @@ interface components {
143
188
  name: string;
144
189
  shortName: string | undefined;
145
190
  technicalName: string;
146
- brand: {
147
- /**
148
- * @description Resource identifier
149
- * @example 6a577711abc1ce71383d3e10
150
- */
151
- id: string;
152
- /** @example Pokémon */
153
- name: string;
154
- /** @example pokemon */
155
- technicalName: string;
156
- /**
157
- * Format: date-time
158
- * @example 2026-07-15T12:03:29.322Z
159
- */
160
- createdAt: string;
161
- /**
162
- * Format: date-time
163
- * @example 2026-07-15T12:03:29.322Z
164
- */
165
- updatedAt: string;
166
- };
191
+ brand: components["schemas"]["Brand"];
167
192
  manufacturer: string;
168
193
  modelNumber: string | undefined;
169
- category: {
170
- /**
171
- * @description Resource identifier
172
- * @example 6a577711abc1ce71383d3e10
173
- */
174
- id: string;
175
- /** @example Booster Box */
176
- name: string;
177
- /** @example booster-box */
178
- technicalName: string;
179
- } | undefined;
180
- expansion: {
181
- /**
182
- * @description Resource identifier
183
- * @example 6a577711abc1ce71383d3e10
184
- */
185
- id: string;
186
- /** @example Mega Evolution 30th Celebration */
187
- name: string;
188
- /** @example 30th Celebration */
189
- shortName: string;
190
- /** @example jpn-mega-evolution-30th-celebration */
191
- technicalName: string;
192
- /**
193
- * @description Printing language of the item
194
- * @example JPN
195
- * @enum {string}
196
- */
197
- language: "ENG" | "JPN" | "CHI";
198
- /** @example m6a */
199
- code: string | undefined;
200
- /** @example m6a */
201
- cardCode: string | undefined;
202
- /** @example Mega Evolution */
203
- seriesName: string | undefined;
204
- /**
205
- * Format: date-time
206
- * @example 2026-07-15T12:03:29.322Z
207
- */
208
- releaseDate: string | undefined;
209
- /**
210
- * @description Absolute asset URL, or null when absent
211
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
212
- */
213
- logoUrl: string | undefined;
214
- /**
215
- * @description Absolute asset URL, or null when absent
216
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
217
- */
218
- symbolUrl: string | undefined;
219
- /**
220
- * @description Absolute asset URL, or null when absent
221
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
222
- */
223
- imageUrl: string | undefined;
224
- } | undefined;
194
+ category: components["schemas"]["CategoryRef"] | undefined;
195
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
225
196
  /**
226
197
  * @description Printing language of the item
227
198
  * @example JPN
228
199
  * @enum {string|null}
229
200
  */
230
201
  language: "ENG" | "JPN" | "CHI" | undefined;
231
- alternativeNames: {
232
- name: string;
233
- shortName: string | undefined;
234
- }[];
202
+ alternativeNames: components["schemas"]["AlternativeName"][];
235
203
  supportsMultipackPricing: boolean;
236
204
  /**
237
205
  * @description Absolute asset URL, or null when absent
@@ -276,73 +244,52 @@ interface components {
276
244
  artist: string | undefined;
277
245
  cardmarketId: string | undefined;
278
246
  tcgplayerId: string | undefined;
279
- variants: {
280
- normal: boolean;
281
- holo: boolean;
282
- reverse: boolean;
283
- firstEdition: boolean;
284
- wPromo: boolean;
285
- } | undefined;
247
+ variants: components["schemas"]["CardVariants"] | undefined;
286
248
  prisjaktId: string | undefined;
287
- lowestShopOffer: {
288
- shop: {
289
- /** @example cardlevels */
290
- technicalName: string;
291
- /** @example Cardlevels */
292
- name: string;
293
- };
294
- url: string;
295
- /** @example 149.5 */
296
- price: number;
297
- /**
298
- * @description ISO-4217 currency code
299
- * @example SEK
300
- */
301
- currency: string;
302
- inStock: boolean;
303
- inPreorder: boolean;
304
- inMonitor: boolean;
305
- isFullyBooked: boolean;
306
- /**
307
- * Format: date-time
308
- * @example 2026-07-15T12:03:29.322Z
309
- */
310
- matchedAt: string;
311
- /**
312
- * Format: date-time
313
- * @example 2026-07-15T12:03:29.322Z
314
- */
315
- updatedAt: string;
316
- bargain: {
317
- discountPercent: number;
318
- /** @enum {string} */
319
- referenceSource: "retail" | "tradera" | "cardmarket";
320
- } | undefined;
321
- } | undefined;
249
+ lowestShopOffer: components["schemas"]["LowestShopOffer"] | undefined;
322
250
  referencePriceSnapshotsByProvider: {
323
- [key: string]: {
324
- /** @enum {string} */
325
- provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
326
- /** @example 149.5 */
327
- price: number;
328
- /**
329
- * @description ISO-4217 currency code
330
- * @example SEK
331
- */
332
- currency: string;
333
- /**
334
- * @description price converted to SEK at the rate stored on the row
335
- * @example 149.5
336
- */
337
- priceSek: number;
338
- /**
339
- * Format: date-time
340
- * @example 2026-07-15T12:03:29.322Z
341
- */
342
- snapshotDate: string;
343
- };
251
+ [key: string]: components["schemas"]["ReferencePriceSummary"];
344
252
  };
345
253
  };
254
+ CatalogItem: components["schemas"]["Card"] | components["schemas"]["Product"];
255
+ CatalogItemRef: {
256
+ /**
257
+ * @description Resource identifier
258
+ * @example 6a577711abc1ce71383d3e10
259
+ */
260
+ id: string;
261
+ name: string;
262
+ };
263
+ CategoryRef: {
264
+ /**
265
+ * @description Resource identifier
266
+ * @example 6a577711abc1ce71383d3e10
267
+ */
268
+ id: string;
269
+ /** @example Booster Box */
270
+ name: string;
271
+ /** @example booster-box */
272
+ technicalName: string;
273
+ };
274
+ DailyPricePoint: {
275
+ /**
276
+ * Format: date-time
277
+ * @example 2026-07-15T12:03:29.322Z
278
+ */
279
+ statDate: string;
280
+ /** @example 149.5 */
281
+ averagePrice: number;
282
+ };
283
+ EstimatedValue: {
284
+ /** @example 149.5 */
285
+ estimatedValue: number | undefined;
286
+ /**
287
+ * Format: date-time
288
+ * @example 2026-07-15T12:03:29.322Z
289
+ */
290
+ estimateUpdatedAt: string | undefined;
291
+ dataPointCount: number;
292
+ };
346
293
  Expansion: {
347
294
  /**
348
295
  * @description Resource identifier
@@ -388,31 +335,8 @@ interface components {
388
335
  */
389
336
  imageUrl: string | undefined;
390
337
  year: number | undefined;
391
- brand: {
392
- /**
393
- * @description Resource identifier
394
- * @example 6a577711abc1ce71383d3e10
395
- */
396
- id: string;
397
- /** @example Pokémon */
398
- name: string;
399
- /** @example pokemon */
400
- technicalName: string;
401
- /**
402
- * Format: date-time
403
- * @example 2026-07-15T12:03:29.322Z
404
- */
405
- createdAt: string;
406
- /**
407
- * Format: date-time
408
- * @example 2026-07-15T12:03:29.322Z
409
- */
410
- updatedAt: string;
411
- };
412
- alternativeNames: {
413
- name: string;
414
- shortName: string | undefined;
415
- }[];
338
+ brand: components["schemas"]["Brand"];
339
+ alternativeNames: components["schemas"]["AlternativeName"][];
416
340
  /** @description Sealed products in this expansion */
417
341
  sealedCount: number;
418
342
  /** @description Cards in this expansion */
@@ -431,973 +355,94 @@ interface components {
431
355
  updatedAt: string;
432
356
  };
433
357
  ExpansionContents: {
434
- expansion: {
435
- /**
436
- * @description Resource identifier
437
- * @example 6a577711abc1ce71383d3e10
438
- */
439
- id: string;
440
- /** @example Mega Evolution 30th Celebration */
441
- name: string;
442
- /** @example 30th Celebration */
443
- shortName: string;
444
- /** @example jpn-mega-evolution-30th-celebration */
445
- technicalName: string;
446
- /**
447
- * @description Printing language of the item
448
- * @example JPN
449
- * @enum {string}
450
- */
451
- language: "ENG" | "JPN" | "CHI";
452
- /** @example m6a */
453
- code: string | undefined;
454
- /** @example m6a */
455
- cardCode: string | undefined;
456
- /** @example Mega Evolution */
457
- seriesName: string | undefined;
458
- /**
459
- * Format: date-time
460
- * @example 2026-07-15T12:03:29.322Z
461
- */
462
- releaseDate: string | undefined;
463
- /**
464
- * @description Absolute asset URL, or null when absent
465
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
466
- */
467
- logoUrl: string | undefined;
468
- /**
469
- * @description Absolute asset URL, or null when absent
470
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
471
- */
472
- symbolUrl: string | undefined;
473
- /**
474
- * @description Absolute asset URL, or null when absent
475
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
476
- */
477
- imageUrl: string | undefined;
478
- };
358
+ expansion: components["schemas"]["ExpansionRef"];
479
359
  cards: {
480
360
  count: number;
481
- items: {
482
- /**
483
- * @description Resource identifier
484
- * @example 6a577711abc1ce71383d3e10
485
- */
486
- id: string;
487
- name: string;
488
- shortName: string | undefined;
489
- technicalName: string;
490
- brand: {
491
- /**
492
- * @description Resource identifier
493
- * @example 6a577711abc1ce71383d3e10
494
- */
495
- id: string;
496
- /** @example Pokémon */
497
- name: string;
498
- /** @example pokemon */
499
- technicalName: string;
500
- /**
501
- * Format: date-time
502
- * @example 2026-07-15T12:03:29.322Z
503
- */
504
- createdAt: string;
505
- /**
506
- * Format: date-time
507
- * @example 2026-07-15T12:03:29.322Z
508
- */
509
- updatedAt: string;
510
- };
511
- manufacturer: string;
512
- modelNumber: string | undefined;
513
- category: {
514
- /**
515
- * @description Resource identifier
516
- * @example 6a577711abc1ce71383d3e10
517
- */
518
- id: string;
519
- /** @example Booster Box */
520
- name: string;
521
- /** @example booster-box */
522
- technicalName: string;
523
- } | undefined;
524
- expansion: {
525
- /**
526
- * @description Resource identifier
527
- * @example 6a577711abc1ce71383d3e10
528
- */
529
- id: string;
530
- /** @example Mega Evolution 30th Celebration */
531
- name: string;
532
- /** @example 30th Celebration */
533
- shortName: string;
534
- /** @example jpn-mega-evolution-30th-celebration */
535
- technicalName: string;
536
- /**
537
- * @description Printing language of the item
538
- * @example JPN
539
- * @enum {string}
540
- */
541
- language: "ENG" | "JPN" | "CHI";
542
- /** @example m6a */
543
- code: string | undefined;
544
- /** @example m6a */
545
- cardCode: string | undefined;
546
- /** @example Mega Evolution */
547
- seriesName: string | undefined;
548
- /**
549
- * Format: date-time
550
- * @example 2026-07-15T12:03:29.322Z
551
- */
552
- releaseDate: string | undefined;
553
- /**
554
- * @description Absolute asset URL, or null when absent
555
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
556
- */
557
- logoUrl: string | undefined;
558
- /**
559
- * @description Absolute asset URL, or null when absent
560
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
561
- */
562
- symbolUrl: string | undefined;
563
- /**
564
- * @description Absolute asset URL, or null when absent
565
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
566
- */
567
- imageUrl: string | undefined;
568
- } | undefined;
569
- /**
570
- * @description Printing language of the item
571
- * @example JPN
572
- * @enum {string|null}
573
- */
574
- language: "ENG" | "JPN" | "CHI" | undefined;
575
- alternativeNames: {
576
- name: string;
577
- shortName: string | undefined;
578
- }[];
579
- supportsMultipackPricing: boolean;
580
- /**
581
- * @description Absolute asset URL, or null when absent
582
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
583
- */
584
- imageUrl: string | undefined;
585
- /**
586
- * @description Cheapest current shop price, in SEK
587
- * @example 149.5
588
- */
589
- retailPrice: number | undefined;
590
- /**
591
- * @description Estimated market value, in SEK
592
- * @example 149.5
593
- */
594
- estimatedValue: number | undefined;
595
- /** @description Active shops currently tracking this item */
596
- shopCount: number;
597
- /** @description Observations the estimate rests on */
598
- pricingDataPoints: number;
599
- /**
600
- * Format: date-time
601
- * @example 2026-07-15T12:03:29.322Z
602
- */
603
- pricingUpdatedAt: string | undefined;
604
- /**
605
- * Format: date-time
606
- * @example 2026-07-15T12:03:29.322Z
607
- */
608
- createdAt: string;
609
- /**
610
- * Format: date-time
611
- * @example 2026-07-15T12:03:29.322Z
612
- */
613
- updatedAt: string;
614
- /** @enum {string} */
615
- kind: "card";
616
- /** @example 4/102 */
617
- cardNumber: string;
618
- /** @example Rare Holo */
619
- rarity: string | undefined;
620
- artist: string | undefined;
621
- cardmarketId: string | undefined;
622
- tcgplayerId: string | undefined;
623
- variants: {
624
- normal: boolean;
625
- holo: boolean;
626
- reverse: boolean;
627
- firstEdition: boolean;
628
- wPromo: boolean;
629
- } | undefined;
630
- prisjaktId: string | undefined;
631
- lowestShopOffer: {
632
- shop: {
633
- /** @example cardlevels */
634
- technicalName: string;
635
- /** @example Cardlevels */
636
- name: string;
637
- };
638
- url: string;
639
- /** @example 149.5 */
640
- price: number;
641
- /**
642
- * @description ISO-4217 currency code
643
- * @example SEK
644
- */
645
- currency: string;
646
- inStock: boolean;
647
- inPreorder: boolean;
648
- inMonitor: boolean;
649
- isFullyBooked: boolean;
650
- /**
651
- * Format: date-time
652
- * @example 2026-07-15T12:03:29.322Z
653
- */
654
- matchedAt: string;
655
- /**
656
- * Format: date-time
657
- * @example 2026-07-15T12:03:29.322Z
658
- */
659
- updatedAt: string;
660
- bargain: {
661
- discountPercent: number;
662
- /** @enum {string} */
663
- referenceSource: "retail" | "tradera" | "cardmarket";
664
- } | undefined;
665
- } | undefined;
666
- referencePriceSnapshotsByProvider: {
667
- [key: string]: {
668
- /** @enum {string} */
669
- provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
670
- /** @example 149.5 */
671
- price: number;
672
- /**
673
- * @description ISO-4217 currency code
674
- * @example SEK
675
- */
676
- currency: string;
677
- /**
678
- * @description price converted to SEK at the rate stored on the row
679
- * @example 149.5
680
- */
681
- priceSek: number;
682
- /**
683
- * Format: date-time
684
- * @example 2026-07-15T12:03:29.322Z
685
- */
686
- snapshotDate: string;
687
- };
688
- };
689
- }[];
361
+ items: components["schemas"]["CardWithPricing"][];
690
362
  };
691
363
  sealed: {
692
364
  count: number;
693
- items: {
694
- /**
695
- * @description Resource identifier
696
- * @example 6a577711abc1ce71383d3e10
697
- */
698
- id: string;
699
- name: string;
700
- shortName: string | undefined;
701
- technicalName: string;
702
- brand: {
703
- /**
704
- * @description Resource identifier
705
- * @example 6a577711abc1ce71383d3e10
706
- */
707
- id: string;
708
- /** @example Pokémon */
709
- name: string;
710
- /** @example pokemon */
711
- technicalName: string;
712
- /**
713
- * Format: date-time
714
- * @example 2026-07-15T12:03:29.322Z
715
- */
716
- createdAt: string;
717
- /**
718
- * Format: date-time
719
- * @example 2026-07-15T12:03:29.322Z
720
- */
721
- updatedAt: string;
722
- };
723
- manufacturer: string;
724
- modelNumber: string | undefined;
725
- category: {
726
- /**
727
- * @description Resource identifier
728
- * @example 6a577711abc1ce71383d3e10
729
- */
730
- id: string;
731
- /** @example Booster Box */
732
- name: string;
733
- /** @example booster-box */
734
- technicalName: string;
735
- } | undefined;
736
- expansion: {
737
- /**
738
- * @description Resource identifier
739
- * @example 6a577711abc1ce71383d3e10
740
- */
741
- id: string;
742
- /** @example Mega Evolution 30th Celebration */
743
- name: string;
744
- /** @example 30th Celebration */
745
- shortName: string;
746
- /** @example jpn-mega-evolution-30th-celebration */
747
- technicalName: string;
748
- /**
749
- * @description Printing language of the item
750
- * @example JPN
751
- * @enum {string}
752
- */
753
- language: "ENG" | "JPN" | "CHI";
754
- /** @example m6a */
755
- code: string | undefined;
756
- /** @example m6a */
757
- cardCode: string | undefined;
758
- /** @example Mega Evolution */
759
- seriesName: string | undefined;
760
- /**
761
- * Format: date-time
762
- * @example 2026-07-15T12:03:29.322Z
763
- */
764
- releaseDate: string | undefined;
765
- /**
766
- * @description Absolute asset URL, or null when absent
767
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
768
- */
769
- logoUrl: string | undefined;
770
- /**
771
- * @description Absolute asset URL, or null when absent
772
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
773
- */
774
- symbolUrl: string | undefined;
775
- /**
776
- * @description Absolute asset URL, or null when absent
777
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
778
- */
779
- imageUrl: string | undefined;
780
- } | undefined;
781
- /**
782
- * @description Printing language of the item
783
- * @example JPN
784
- * @enum {string|null}
785
- */
786
- language: "ENG" | "JPN" | "CHI" | undefined;
787
- alternativeNames: {
788
- name: string;
789
- shortName: string | undefined;
790
- }[];
791
- supportsMultipackPricing: boolean;
792
- /**
793
- * @description Absolute asset URL, or null when absent
794
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
795
- */
796
- imageUrl: string | undefined;
797
- /**
798
- * @description Cheapest current shop price, in SEK
799
- * @example 149.5
800
- */
801
- retailPrice: number | undefined;
802
- /**
803
- * @description Estimated market value, in SEK
804
- * @example 149.5
805
- */
806
- estimatedValue: number | undefined;
807
- /** @description Active shops currently tracking this item */
808
- shopCount: number;
809
- /** @description Observations the estimate rests on */
810
- pricingDataPoints: number;
811
- /**
812
- * Format: date-time
813
- * @example 2026-07-15T12:03:29.322Z
814
- */
815
- pricingUpdatedAt: string | undefined;
816
- /**
817
- * Format: date-time
818
- * @example 2026-07-15T12:03:29.322Z
819
- */
820
- createdAt: string;
821
- /**
822
- * Format: date-time
823
- * @example 2026-07-15T12:03:29.322Z
824
- */
825
- updatedAt: string;
826
- /** @enum {string} */
827
- kind: "sealed";
828
- upc: string | undefined;
829
- asin: string | undefined;
830
- epid: string | undefined;
831
- priceChartingId: string | undefined;
832
- prisjaktId: string | undefined;
833
- lowestShopOffer: {
834
- shop: {
835
- /** @example cardlevels */
836
- technicalName: string;
837
- /** @example Cardlevels */
838
- name: string;
839
- };
840
- url: string;
841
- /** @example 149.5 */
842
- price: number;
843
- /**
844
- * @description ISO-4217 currency code
845
- * @example SEK
846
- */
847
- currency: string;
848
- inStock: boolean;
849
- inPreorder: boolean;
850
- inMonitor: boolean;
851
- isFullyBooked: boolean;
852
- /**
853
- * Format: date-time
854
- * @example 2026-07-15T12:03:29.322Z
855
- */
856
- matchedAt: string;
857
- /**
858
- * Format: date-time
859
- * @example 2026-07-15T12:03:29.322Z
860
- */
861
- updatedAt: string;
862
- bargain: {
863
- discountPercent: number;
864
- /** @enum {string} */
865
- referenceSource: "retail" | "tradera" | "cardmarket";
866
- } | undefined;
867
- } | undefined;
868
- referencePriceSnapshotsByProvider: {
869
- [key: string]: {
870
- /** @enum {string} */
871
- provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
872
- /** @example 149.5 */
873
- price: number;
874
- /**
875
- * @description ISO-4217 currency code
876
- * @example SEK
877
- */
878
- currency: string;
879
- /**
880
- * @description price converted to SEK at the rate stored on the row
881
- * @example 149.5
882
- */
883
- priceSek: number;
884
- /**
885
- * Format: date-time
886
- * @example 2026-07-15T12:03:29.322Z
887
- */
888
- snapshotDate: string;
889
- };
890
- };
891
- }[];
365
+ items: components["schemas"]["ProductWithPricing"][];
892
366
  };
893
367
  };
894
368
  ExpansionLivePricing: {
895
369
  expansion: {
896
370
  technicalName: string;
897
371
  };
898
- items: {
899
- /**
900
- * @description Resource identifier
901
- * @example 6a577711abc1ce71383d3e10
902
- */
903
- id: string;
904
- name: string;
905
- technicalName: string;
906
- pricing: {
907
- /** @example 149.5 */
908
- retailPrice: number | undefined;
909
- /** @example 149.5 */
910
- estimatedValue: number | undefined;
911
- shopCount: number;
912
- pricingDataPoints: number;
913
- /**
914
- * Format: date-time
915
- * @example 2026-07-15T12:03:29.322Z
916
- */
917
- calculatedAt: string;
918
- };
919
- }[];
920
- };
921
- ItemDailyStats: {
922
- item: {
923
- /**
924
- * @description Resource identifier
925
- * @example 6a577711abc1ce71383d3e10
926
- */
927
- id: string;
928
- name: string;
929
- };
930
- dailyStats: {
931
- /**
932
- * Format: date-time
933
- * @example 2026-07-15T12:03:29.322Z
934
- */
935
- statDate: string;
936
- /** @example 149.5 */
937
- averagePrice: number;
938
- }[];
372
+ items: components["schemas"]["LivePricingForItem"][];
373
+ };
374
+ ExpansionRef: {
375
+ /**
376
+ * @description Resource identifier
377
+ * @example 6a577711abc1ce71383d3e10
378
+ */
379
+ id: string;
380
+ /** @example Mega Evolution 30th Celebration */
381
+ name: string;
382
+ /** @example 30th Celebration */
383
+ shortName: string;
384
+ /** @example jpn-mega-evolution-30th-celebration */
385
+ technicalName: string;
386
+ /**
387
+ * @description Printing language of the item
388
+ * @example JPN
389
+ * @enum {string}
390
+ */
391
+ language: "ENG" | "JPN" | "CHI";
392
+ /** @example m6a */
393
+ code: string | undefined;
394
+ /** @example m6a */
395
+ cardCode: string | undefined;
396
+ /** @example Mega Evolution */
397
+ seriesName: string | undefined;
398
+ /**
399
+ * Format: date-time
400
+ * @example 2026-07-15T12:03:29.322Z
401
+ */
402
+ releaseDate: string | undefined;
403
+ /**
404
+ * @description Absolute asset URL, or null when absent
405
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
406
+ */
407
+ logoUrl: string | undefined;
408
+ /**
409
+ * @description Absolute asset URL, or null when absent
410
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
411
+ */
412
+ symbolUrl: string | undefined;
413
+ /**
414
+ * @description Absolute asset URL, or null when absent
415
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
416
+ */
417
+ imageUrl: string | undefined;
418
+ };
419
+ ItemDailyStats: {
420
+ item: components["schemas"]["CatalogItemRef"];
421
+ dailyStats: components["schemas"]["DailyPricePoint"][];
939
422
  };
940
423
  ItemEstimatedValue: {
941
- item: {
942
- /**
943
- * @description Resource identifier
944
- * @example 6a577711abc1ce71383d3e10
945
- */
946
- id: string;
947
- name: string;
948
- };
949
- estimate: {
950
- /** @example 149.5 */
951
- estimatedValue: number | undefined;
952
- /**
953
- * Format: date-time
954
- * @example 2026-07-15T12:03:29.322Z
955
- */
956
- estimateUpdatedAt: string | undefined;
957
- dataPointCount: number;
958
- };
424
+ item: components["schemas"]["CatalogItemRef"];
425
+ estimate: components["schemas"]["EstimatedValue"];
959
426
  };
960
427
  ItemFullStats: {
961
- item: {
962
- /**
963
- * @description Resource identifier
964
- * @example 6a577711abc1ce71383d3e10
965
- */
966
- id: string;
967
- name: string;
968
- shortName: string | undefined;
969
- technicalName: string;
970
- brand: {
971
- /**
972
- * @description Resource identifier
973
- * @example 6a577711abc1ce71383d3e10
974
- */
975
- id: string;
976
- /** @example Pokémon */
977
- name: string;
978
- /** @example pokemon */
979
- technicalName: string;
980
- /**
981
- * Format: date-time
982
- * @example 2026-07-15T12:03:29.322Z
983
- */
984
- createdAt: string;
985
- /**
986
- * Format: date-time
987
- * @example 2026-07-15T12:03:29.322Z
988
- */
989
- updatedAt: string;
990
- };
991
- manufacturer: string;
992
- modelNumber: string | undefined;
993
- category: {
994
- /**
995
- * @description Resource identifier
996
- * @example 6a577711abc1ce71383d3e10
997
- */
998
- id: string;
999
- /** @example Booster Box */
1000
- name: string;
1001
- /** @example booster-box */
1002
- technicalName: string;
1003
- } | undefined;
1004
- expansion: {
1005
- /**
1006
- * @description Resource identifier
1007
- * @example 6a577711abc1ce71383d3e10
1008
- */
1009
- id: string;
1010
- /** @example Mega Evolution 30th Celebration */
1011
- name: string;
1012
- /** @example 30th Celebration */
1013
- shortName: string;
1014
- /** @example jpn-mega-evolution-30th-celebration */
1015
- technicalName: string;
1016
- /**
1017
- * @description Printing language of the item
1018
- * @example JPN
1019
- * @enum {string}
1020
- */
1021
- language: "ENG" | "JPN" | "CHI";
1022
- /** @example m6a */
1023
- code: string | undefined;
1024
- /** @example m6a */
1025
- cardCode: string | undefined;
1026
- /** @example Mega Evolution */
1027
- seriesName: string | undefined;
1028
- /**
1029
- * Format: date-time
1030
- * @example 2026-07-15T12:03:29.322Z
1031
- */
1032
- releaseDate: string | undefined;
1033
- /**
1034
- * @description Absolute asset URL, or null when absent
1035
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1036
- */
1037
- logoUrl: string | undefined;
1038
- /**
1039
- * @description Absolute asset URL, or null when absent
1040
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1041
- */
1042
- symbolUrl: string | undefined;
1043
- /**
1044
- * @description Absolute asset URL, or null when absent
1045
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1046
- */
1047
- imageUrl: string | undefined;
1048
- } | undefined;
1049
- /**
1050
- * @description Printing language of the item
1051
- * @example JPN
1052
- * @enum {string|null}
1053
- */
1054
- language: "ENG" | "JPN" | "CHI" | undefined;
1055
- alternativeNames: {
1056
- name: string;
1057
- shortName: string | undefined;
1058
- }[];
1059
- supportsMultipackPricing: boolean;
1060
- /**
1061
- * @description Absolute asset URL, or null when absent
1062
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1063
- */
1064
- imageUrl: string | undefined;
1065
- /**
1066
- * @description Cheapest current shop price, in SEK
1067
- * @example 149.5
1068
- */
1069
- retailPrice: number | undefined;
1070
- /**
1071
- * @description Estimated market value, in SEK
1072
- * @example 149.5
1073
- */
1074
- estimatedValue: number | undefined;
1075
- /** @description Active shops currently tracking this item */
1076
- shopCount: number;
1077
- /** @description Observations the estimate rests on */
1078
- pricingDataPoints: number;
1079
- /**
1080
- * Format: date-time
1081
- * @example 2026-07-15T12:03:29.322Z
1082
- */
1083
- pricingUpdatedAt: string | undefined;
1084
- /**
1085
- * Format: date-time
1086
- * @example 2026-07-15T12:03:29.322Z
1087
- */
1088
- createdAt: string;
1089
- /**
1090
- * Format: date-time
1091
- * @example 2026-07-15T12:03:29.322Z
1092
- */
1093
- updatedAt: string;
1094
- /** @enum {string} */
1095
- kind: "card";
1096
- /** @example 4/102 */
1097
- cardNumber: string;
1098
- /** @example Rare Holo */
1099
- rarity: string | undefined;
1100
- artist: string | undefined;
1101
- cardmarketId: string | undefined;
1102
- tcgplayerId: string | undefined;
1103
- variants: {
1104
- normal: boolean;
1105
- holo: boolean;
1106
- reverse: boolean;
1107
- firstEdition: boolean;
1108
- wPromo: boolean;
1109
- } | undefined;
1110
- prisjaktId: string | undefined;
1111
- } | {
1112
- /**
1113
- * @description Resource identifier
1114
- * @example 6a577711abc1ce71383d3e10
1115
- */
1116
- id: string;
1117
- name: string;
1118
- shortName: string | undefined;
1119
- technicalName: string;
1120
- brand: {
1121
- /**
1122
- * @description Resource identifier
1123
- * @example 6a577711abc1ce71383d3e10
1124
- */
1125
- id: string;
1126
- /** @example Pokémon */
1127
- name: string;
1128
- /** @example pokemon */
1129
- technicalName: string;
1130
- /**
1131
- * Format: date-time
1132
- * @example 2026-07-15T12:03:29.322Z
1133
- */
1134
- createdAt: string;
1135
- /**
1136
- * Format: date-time
1137
- * @example 2026-07-15T12:03:29.322Z
1138
- */
1139
- updatedAt: string;
1140
- };
1141
- manufacturer: string;
1142
- modelNumber: string | undefined;
1143
- category: {
1144
- /**
1145
- * @description Resource identifier
1146
- * @example 6a577711abc1ce71383d3e10
1147
- */
1148
- id: string;
1149
- /** @example Booster Box */
1150
- name: string;
1151
- /** @example booster-box */
1152
- technicalName: string;
1153
- } | undefined;
1154
- expansion: {
1155
- /**
1156
- * @description Resource identifier
1157
- * @example 6a577711abc1ce71383d3e10
1158
- */
1159
- id: string;
1160
- /** @example Mega Evolution 30th Celebration */
1161
- name: string;
1162
- /** @example 30th Celebration */
1163
- shortName: string;
1164
- /** @example jpn-mega-evolution-30th-celebration */
1165
- technicalName: string;
1166
- /**
1167
- * @description Printing language of the item
1168
- * @example JPN
1169
- * @enum {string}
1170
- */
1171
- language: "ENG" | "JPN" | "CHI";
1172
- /** @example m6a */
1173
- code: string | undefined;
1174
- /** @example m6a */
1175
- cardCode: string | undefined;
1176
- /** @example Mega Evolution */
1177
- seriesName: string | undefined;
1178
- /**
1179
- * Format: date-time
1180
- * @example 2026-07-15T12:03:29.322Z
1181
- */
1182
- releaseDate: string | undefined;
1183
- /**
1184
- * @description Absolute asset URL, or null when absent
1185
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1186
- */
1187
- logoUrl: string | undefined;
1188
- /**
1189
- * @description Absolute asset URL, or null when absent
1190
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1191
- */
1192
- symbolUrl: string | undefined;
1193
- /**
1194
- * @description Absolute asset URL, or null when absent
1195
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1196
- */
1197
- imageUrl: string | undefined;
1198
- } | undefined;
1199
- /**
1200
- * @description Printing language of the item
1201
- * @example JPN
1202
- * @enum {string|null}
1203
- */
1204
- language: "ENG" | "JPN" | "CHI" | undefined;
1205
- alternativeNames: {
1206
- name: string;
1207
- shortName: string | undefined;
1208
- }[];
1209
- supportsMultipackPricing: boolean;
1210
- /**
1211
- * @description Absolute asset URL, or null when absent
1212
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1213
- */
1214
- imageUrl: string | undefined;
1215
- /**
1216
- * @description Cheapest current shop price, in SEK
1217
- * @example 149.5
1218
- */
1219
- retailPrice: number | undefined;
1220
- /**
1221
- * @description Estimated market value, in SEK
1222
- * @example 149.5
1223
- */
1224
- estimatedValue: number | undefined;
1225
- /** @description Active shops currently tracking this item */
1226
- shopCount: number;
1227
- /** @description Observations the estimate rests on */
1228
- pricingDataPoints: number;
1229
- /**
1230
- * Format: date-time
1231
- * @example 2026-07-15T12:03:29.322Z
1232
- */
1233
- pricingUpdatedAt: string | undefined;
1234
- /**
1235
- * Format: date-time
1236
- * @example 2026-07-15T12:03:29.322Z
1237
- */
1238
- createdAt: string;
1239
- /**
1240
- * Format: date-time
1241
- * @example 2026-07-15T12:03:29.322Z
1242
- */
1243
- updatedAt: string;
1244
- /** @enum {string} */
1245
- kind: "sealed";
1246
- upc: string | undefined;
1247
- asin: string | undefined;
1248
- epid: string | undefined;
1249
- priceChartingId: string | undefined;
1250
- prisjaktId: string | undefined;
1251
- };
428
+ item: components["schemas"]["CatalogItem"];
1252
429
  stats: {
1253
- dailyStats: {
1254
- /**
1255
- * Format: date-time
1256
- * @example 2026-07-15T12:03:29.322Z
1257
- */
1258
- statDate: string;
1259
- /** @example 149.5 */
1260
- averagePrice: number;
1261
- }[];
1262
- variantStats: {
1263
- /** @description Distinct cardType/condition/company/grade combinations */
1264
- variantCount: number;
1265
- looseCount: number;
1266
- gradedCount: number;
1267
- };
1268
- };
1269
- estimate: {
1270
- /** @example 149.5 */
1271
- estimatedValue: number | undefined;
1272
- /**
1273
- * Format: date-time
1274
- * @example 2026-07-15T12:03:29.322Z
1275
- */
1276
- estimateUpdatedAt: string | undefined;
1277
- dataPointCount: number;
430
+ dailyStats: components["schemas"]["DailyPricePoint"][];
431
+ variantStats: components["schemas"]["VariantStatsSummary"];
1278
432
  };
433
+ estimate: components["schemas"]["EstimatedValue"];
1279
434
  shopMatches: {
1280
- data: {
1281
- /**
1282
- * @description Resource identifier
1283
- * @example 6a577711abc1ce71383d3e10
1284
- */
1285
- id: string;
1286
- shop: {
1287
- /** @example cardlevels */
1288
- technicalName: string;
1289
- /** @example Cardlevels */
1290
- name: string;
1291
- delivery: {
1292
- /** @example 149.5 */
1293
- cost: number | undefined;
1294
- currency: string | undefined;
1295
- daysMin: number | undefined;
1296
- daysMax: number | undefined;
1297
- /** @example 149.5 */
1298
- freeShippingThreshold: number | undefined;
1299
- supportsLocalPickup: boolean | undefined;
1300
- note: string | undefined;
1301
- };
1302
- };
1303
- url: string;
1304
- /**
1305
- * @description Resource identifier
1306
- * @example 6a577711abc1ce71383d3e10
1307
- */
1308
- shopUrlId: string | undefined;
1309
- /** @example 149.5 */
1310
- price: number | undefined;
1311
- /**
1312
- * @description ISO-4217 currency code
1313
- * @example SEK
1314
- */
1315
- currency: string | undefined;
1316
- inStock: boolean;
1317
- inPreorder: boolean;
1318
- inMonitor: boolean;
1319
- isFullyBooked: boolean;
1320
- scrapedName: string | undefined;
1321
- scrapedType: string | undefined;
1322
- matchScore: number | undefined;
1323
- hasCategoryMismatch: boolean;
1324
- /** @enum {string|null} */
1325
- cardType: "loose" | "graded" | undefined;
1326
- /** @enum {string|null} */
1327
- itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
1328
- /** @enum {string|null} */
1329
- gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
1330
- grade: number | undefined;
1331
- /**
1332
- * Format: date-time
1333
- * @example 2026-07-15T12:03:29.322Z
1334
- */
1335
- matchedAt: string;
1336
- /**
1337
- * Format: date-time
1338
- * @example 2026-07-15T12:03:29.322Z
1339
- */
1340
- updatedAt: string;
1341
- bargain: {
1342
- discountPercent: number;
1343
- /** @enum {string} */
1344
- referenceSource: "retail" | "tradera" | "cardmarket";
1345
- } | undefined;
1346
- }[];
1347
- pagination: {
1348
- /** @description Total matching records, ignoring pagination */
1349
- total: number;
1350
- limit: number;
1351
- skip: number;
1352
- hasMore: boolean;
1353
- };
435
+ data: components["schemas"]["ShopProductMatch"][];
436
+ pagination: components["schemas"]["PageMeta"];
1354
437
  };
1355
438
  };
1356
439
  ItemPriceComparison: {
1357
- item: {
1358
- /**
1359
- * @description Resource identifier
1360
- * @example 6a577711abc1ce71383d3e10
1361
- */
1362
- id: string;
1363
- name: string;
1364
- };
1365
- items: {
1366
- shop: string;
1367
- /** @example 149.5 */
1368
- price: number;
1369
- /**
1370
- * @description ISO-4217 currency code
1371
- * @example SEK
1372
- */
1373
- currency: string;
1374
- inStock: boolean;
1375
- url: string;
1376
- /**
1377
- * Format: date-time
1378
- * @example 2026-07-15T12:03:29.322Z
1379
- */
1380
- snapshotDate: string;
1381
- }[];
1382
- stats: {
1383
- /** @example 149.5 */
1384
- lowestPrice: number;
1385
- /** @example 149.5 */
1386
- highestPrice: number;
1387
- /** @example 149.5 */
1388
- averagePrice: number;
1389
- inStockCount: number;
1390
- } | undefined;
440
+ item: components["schemas"]["CatalogItemRef"];
441
+ items: components["schemas"]["ShopPriceComparisonRow"][];
442
+ stats: components["schemas"]["ShopPriceComparisonStats"] | undefined;
1391
443
  };
1392
444
  ItemReferencePrices: {
1393
- item: {
1394
- /**
1395
- * @description Resource identifier
1396
- * @example 6a577711abc1ce71383d3e10
1397
- */
1398
- id: string;
1399
- name: string;
1400
- };
445
+ item: components["schemas"]["CatalogItemRef"];
1401
446
  /**
1402
447
  * Format: date-time
1403
448
  * @example 2026-07-15T12:03:29.322Z
@@ -1412,592 +457,115 @@ interface components {
1412
457
  metric: "price" | "low" | "mid" | "high" | "avg" | "avg1" | "avg7" | "avg30" | "directLow";
1413
458
  /** @enum {string} */
1414
459
  currencyMode: "native" | "sek";
1415
- series: {
1416
- /** @enum {string} */
1417
- source: "tcgdex" | "cmapi" | "tradera";
1418
- /** @enum {string} */
1419
- provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
1420
- /** @enum {string|null} */
1421
- variant: "normal" | "holo" | "reverse" | undefined;
1422
- /** @enum {string|null} */
1423
- cardType: "loose" | "graded" | undefined;
1424
- /** @enum {string|null} */
1425
- gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
1426
- grade: number | undefined;
1427
- currency: string;
1428
- sampleSize: number | undefined;
1429
- points: {
1430
- /**
1431
- * Format: date-time
1432
- * @example 2026-07-15T12:03:29.322Z
1433
- */
1434
- snapshotDate: string;
1435
- price: number;
1436
- }[];
1437
- }[];
460
+ series: components["schemas"]["ReferencePriceSeries"][];
1438
461
  };
1439
462
  ItemShopMatches: {
1440
- item: {
1441
- /**
1442
- * @description Resource identifier
1443
- * @example 6a577711abc1ce71383d3e10
1444
- */
1445
- id: string;
1446
- name: string;
1447
- };
1448
- data: {
1449
- /**
1450
- * @description Resource identifier
1451
- * @example 6a577711abc1ce71383d3e10
1452
- */
1453
- id: string;
1454
- shop: {
1455
- /** @example cardlevels */
1456
- technicalName: string;
1457
- /** @example Cardlevels */
1458
- name: string;
1459
- delivery: {
1460
- /** @example 149.5 */
1461
- cost: number | undefined;
1462
- currency: string | undefined;
1463
- daysMin: number | undefined;
1464
- daysMax: number | undefined;
1465
- /** @example 149.5 */
1466
- freeShippingThreshold: number | undefined;
1467
- supportsLocalPickup: boolean | undefined;
1468
- note: string | undefined;
1469
- };
1470
- };
1471
- url: string;
1472
- /**
1473
- * @description Resource identifier
1474
- * @example 6a577711abc1ce71383d3e10
1475
- */
1476
- shopUrlId: string | undefined;
1477
- /** @example 149.5 */
1478
- price: number | undefined;
1479
- /**
1480
- * @description ISO-4217 currency code
1481
- * @example SEK
1482
- */
1483
- currency: string | undefined;
1484
- inStock: boolean;
1485
- inPreorder: boolean;
1486
- inMonitor: boolean;
1487
- isFullyBooked: boolean;
1488
- scrapedName: string | undefined;
1489
- scrapedType: string | undefined;
1490
- matchScore: number | undefined;
1491
- hasCategoryMismatch: boolean;
1492
- /** @enum {string|null} */
1493
- cardType: "loose" | "graded" | undefined;
1494
- /** @enum {string|null} */
1495
- itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
1496
- /** @enum {string|null} */
1497
- gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
1498
- grade: number | undefined;
1499
- /**
1500
- * Format: date-time
1501
- * @example 2026-07-15T12:03:29.322Z
1502
- */
1503
- matchedAt: string;
1504
- /**
1505
- * Format: date-time
1506
- * @example 2026-07-15T12:03:29.322Z
1507
- */
1508
- updatedAt: string;
1509
- bargain: {
1510
- discountPercent: number;
1511
- /** @enum {string} */
1512
- referenceSource: "retail" | "tradera" | "cardmarket";
1513
- } | undefined;
1514
- }[];
1515
- pagination: {
1516
- /** @description Total matching records, ignoring pagination */
1517
- total: number;
1518
- limit: number;
1519
- skip: number;
1520
- hasMore: boolean;
1521
- };
463
+ item: components["schemas"]["CatalogItemRef"];
464
+ data: components["schemas"]["ShopProductMatch"][];
465
+ pagination: components["schemas"]["PageMeta"];
1522
466
  };
1523
467
  ItemShopPriceHistory: {
1524
- item: {
1525
- /**
1526
- * @description Resource identifier
1527
- * @example 6a577711abc1ce71383d3e10
1528
- */
1529
- id: string;
1530
- name: string;
1531
- };
1532
- shops: {
1533
- /** @description The shop's technicalName */
1534
- shop: string;
1535
- history: {
1536
- /**
1537
- * Format: date-time
1538
- * @example 2026-07-15T12:03:29.322Z
1539
- */
1540
- snapshotDate: string;
1541
- /** @example 149.5 */
1542
- price: number;
1543
- /**
1544
- * @description ISO-4217 currency code
1545
- * @example SEK
1546
- */
1547
- currency: string;
1548
- inStock: boolean;
1549
- url: string;
1550
- }[];
1551
- }[];
468
+ item: components["schemas"]["CatalogItemRef"];
469
+ shops: components["schemas"]["ShopPriceHistory"][];
1552
470
  recordCount: number;
1553
471
  };
1554
472
  ItemSoldPrices: {
1555
- item: {
1556
- /**
1557
- * @description Resource identifier
1558
- * @example 6a577711abc1ce71383d3e10
1559
- */
1560
- id: string;
1561
- name: string;
1562
- };
1563
- data: {
1564
- /**
1565
- * @description Resource identifier
1566
- * @example 6a577711abc1ce71383d3e10
1567
- */
1568
- id: string;
1569
- url: string;
1570
- /** @example 149.5 */
1571
- price: number;
1572
- /**
1573
- * @description ISO-4217 currency code
1574
- * @example SEK
1575
- */
1576
- currency: string;
1577
- /**
1578
- * Format: date-time
1579
- * @example 2026-07-15T12:03:29.322Z
1580
- */
1581
- soldAt: string | undefined;
1582
- itemId: string | undefined;
1583
- /** @example tradera */
1584
- source: string | undefined;
1585
- }[];
1586
- pagination: {
1587
- /** @description Total matching records, ignoring pagination */
1588
- total: number;
1589
- limit: number;
1590
- skip: number;
1591
- hasMore: boolean;
1592
- };
473
+ item: components["schemas"]["CatalogItemRef"];
474
+ data: components["schemas"]["SoldPrice"][];
475
+ pagination: components["schemas"]["PageMeta"];
1593
476
  /** @enum {boolean} */
1594
477
  premiumRequired: true;
1595
478
  };
1596
479
  ItemStats: {
1597
- item: {
1598
- /**
1599
- * @description Resource identifier
1600
- * @example 6a577711abc1ce71383d3e10
1601
- */
1602
- id: string;
1603
- name: string;
1604
- shortName: string | undefined;
1605
- technicalName: string;
1606
- brand: {
1607
- /**
1608
- * @description Resource identifier
1609
- * @example 6a577711abc1ce71383d3e10
1610
- */
1611
- id: string;
1612
- /** @example Pokémon */
1613
- name: string;
1614
- /** @example pokemon */
1615
- technicalName: string;
1616
- /**
1617
- * Format: date-time
1618
- * @example 2026-07-15T12:03:29.322Z
1619
- */
1620
- createdAt: string;
1621
- /**
1622
- * Format: date-time
1623
- * @example 2026-07-15T12:03:29.322Z
1624
- */
1625
- updatedAt: string;
1626
- };
1627
- manufacturer: string;
1628
- modelNumber: string | undefined;
1629
- category: {
1630
- /**
1631
- * @description Resource identifier
1632
- * @example 6a577711abc1ce71383d3e10
1633
- */
1634
- id: string;
1635
- /** @example Booster Box */
1636
- name: string;
1637
- /** @example booster-box */
1638
- technicalName: string;
1639
- } | undefined;
1640
- expansion: {
1641
- /**
1642
- * @description Resource identifier
1643
- * @example 6a577711abc1ce71383d3e10
1644
- */
1645
- id: string;
1646
- /** @example Mega Evolution 30th Celebration */
1647
- name: string;
1648
- /** @example 30th Celebration */
1649
- shortName: string;
1650
- /** @example jpn-mega-evolution-30th-celebration */
1651
- technicalName: string;
1652
- /**
1653
- * @description Printing language of the item
1654
- * @example JPN
1655
- * @enum {string}
1656
- */
1657
- language: "ENG" | "JPN" | "CHI";
1658
- /** @example m6a */
1659
- code: string | undefined;
1660
- /** @example m6a */
1661
- cardCode: string | undefined;
1662
- /** @example Mega Evolution */
1663
- seriesName: string | undefined;
1664
- /**
1665
- * Format: date-time
1666
- * @example 2026-07-15T12:03:29.322Z
1667
- */
1668
- releaseDate: string | undefined;
1669
- /**
1670
- * @description Absolute asset URL, or null when absent
1671
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1672
- */
1673
- logoUrl: string | undefined;
1674
- /**
1675
- * @description Absolute asset URL, or null when absent
1676
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1677
- */
1678
- symbolUrl: string | undefined;
1679
- /**
1680
- * @description Absolute asset URL, or null when absent
1681
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1682
- */
1683
- imageUrl: string | undefined;
1684
- } | undefined;
1685
- /**
1686
- * @description Printing language of the item
1687
- * @example JPN
1688
- * @enum {string|null}
1689
- */
1690
- language: "ENG" | "JPN" | "CHI" | undefined;
1691
- alternativeNames: {
1692
- name: string;
1693
- shortName: string | undefined;
1694
- }[];
1695
- supportsMultipackPricing: boolean;
1696
- /**
1697
- * @description Absolute asset URL, or null when absent
1698
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1699
- */
1700
- imageUrl: string | undefined;
1701
- /**
1702
- * @description Cheapest current shop price, in SEK
1703
- * @example 149.5
1704
- */
1705
- retailPrice: number | undefined;
1706
- /**
1707
- * @description Estimated market value, in SEK
1708
- * @example 149.5
1709
- */
1710
- estimatedValue: number | undefined;
1711
- /** @description Active shops currently tracking this item */
1712
- shopCount: number;
1713
- /** @description Observations the estimate rests on */
1714
- pricingDataPoints: number;
1715
- /**
1716
- * Format: date-time
1717
- * @example 2026-07-15T12:03:29.322Z
1718
- */
1719
- pricingUpdatedAt: string | undefined;
1720
- /**
1721
- * Format: date-time
1722
- * @example 2026-07-15T12:03:29.322Z
1723
- */
1724
- createdAt: string;
1725
- /**
1726
- * Format: date-time
1727
- * @example 2026-07-15T12:03:29.322Z
1728
- */
1729
- updatedAt: string;
1730
- /** @enum {string} */
1731
- kind: "card";
1732
- /** @example 4/102 */
1733
- cardNumber: string;
1734
- /** @example Rare Holo */
1735
- rarity: string | undefined;
1736
- artist: string | undefined;
1737
- cardmarketId: string | undefined;
1738
- tcgplayerId: string | undefined;
1739
- variants: {
1740
- normal: boolean;
1741
- holo: boolean;
1742
- reverse: boolean;
1743
- firstEdition: boolean;
1744
- wPromo: boolean;
1745
- } | undefined;
1746
- prisjaktId: string | undefined;
1747
- } | {
1748
- /**
1749
- * @description Resource identifier
1750
- * @example 6a577711abc1ce71383d3e10
1751
- */
1752
- id: string;
1753
- name: string;
1754
- shortName: string | undefined;
1755
- technicalName: string;
1756
- brand: {
1757
- /**
1758
- * @description Resource identifier
1759
- * @example 6a577711abc1ce71383d3e10
1760
- */
1761
- id: string;
1762
- /** @example Pokémon */
1763
- name: string;
1764
- /** @example pokemon */
1765
- technicalName: string;
1766
- /**
1767
- * Format: date-time
1768
- * @example 2026-07-15T12:03:29.322Z
1769
- */
1770
- createdAt: string;
1771
- /**
1772
- * Format: date-time
1773
- * @example 2026-07-15T12:03:29.322Z
1774
- */
1775
- updatedAt: string;
1776
- };
1777
- manufacturer: string;
1778
- modelNumber: string | undefined;
1779
- category: {
1780
- /**
1781
- * @description Resource identifier
1782
- * @example 6a577711abc1ce71383d3e10
1783
- */
1784
- id: string;
1785
- /** @example Booster Box */
1786
- name: string;
1787
- /** @example booster-box */
1788
- technicalName: string;
1789
- } | undefined;
1790
- expansion: {
1791
- /**
1792
- * @description Resource identifier
1793
- * @example 6a577711abc1ce71383d3e10
1794
- */
1795
- id: string;
1796
- /** @example Mega Evolution 30th Celebration */
1797
- name: string;
1798
- /** @example 30th Celebration */
1799
- shortName: string;
1800
- /** @example jpn-mega-evolution-30th-celebration */
1801
- technicalName: string;
1802
- /**
1803
- * @description Printing language of the item
1804
- * @example JPN
1805
- * @enum {string}
1806
- */
1807
- language: "ENG" | "JPN" | "CHI";
1808
- /** @example m6a */
1809
- code: string | undefined;
1810
- /** @example m6a */
1811
- cardCode: string | undefined;
1812
- /** @example Mega Evolution */
1813
- seriesName: string | undefined;
1814
- /**
1815
- * Format: date-time
1816
- * @example 2026-07-15T12:03:29.322Z
1817
- */
1818
- releaseDate: string | undefined;
1819
- /**
1820
- * @description Absolute asset URL, or null when absent
1821
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1822
- */
1823
- logoUrl: string | undefined;
1824
- /**
1825
- * @description Absolute asset URL, or null when absent
1826
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1827
- */
1828
- symbolUrl: string | undefined;
1829
- /**
1830
- * @description Absolute asset URL, or null when absent
1831
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1832
- */
1833
- imageUrl: string | undefined;
1834
- } | undefined;
1835
- /**
1836
- * @description Printing language of the item
1837
- * @example JPN
1838
- * @enum {string|null}
1839
- */
1840
- language: "ENG" | "JPN" | "CHI" | undefined;
1841
- alternativeNames: {
1842
- name: string;
1843
- shortName: string | undefined;
1844
- }[];
1845
- supportsMultipackPricing: boolean;
1846
- /**
1847
- * @description Absolute asset URL, or null when absent
1848
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1849
- */
1850
- imageUrl: string | undefined;
1851
- /**
1852
- * @description Cheapest current shop price, in SEK
1853
- * @example 149.5
1854
- */
1855
- retailPrice: number | undefined;
1856
- /**
1857
- * @description Estimated market value, in SEK
1858
- * @example 149.5
1859
- */
1860
- estimatedValue: number | undefined;
1861
- /** @description Active shops currently tracking this item */
1862
- shopCount: number;
1863
- /** @description Observations the estimate rests on */
1864
- pricingDataPoints: number;
1865
- /**
1866
- * Format: date-time
1867
- * @example 2026-07-15T12:03:29.322Z
1868
- */
1869
- pricingUpdatedAt: string | undefined;
1870
- /**
1871
- * Format: date-time
1872
- * @example 2026-07-15T12:03:29.322Z
1873
- */
1874
- createdAt: string;
1875
- /**
1876
- * Format: date-time
1877
- * @example 2026-07-15T12:03:29.322Z
1878
- */
1879
- updatedAt: string;
1880
- /** @enum {string} */
1881
- kind: "sealed";
1882
- upc: string | undefined;
1883
- asin: string | undefined;
1884
- epid: string | undefined;
1885
- priceChartingId: string | undefined;
1886
- prisjaktId: string | undefined;
1887
- };
1888
- dailyStats: {
1889
- /**
1890
- * Format: date-time
1891
- * @example 2026-07-15T12:03:29.322Z
1892
- */
1893
- statDate: string;
1894
- /** @example 149.5 */
1895
- averagePrice: number;
1896
- }[];
1897
- estimate: {
1898
- /** @example 149.5 */
1899
- estimatedValue: number | undefined;
1900
- /**
1901
- * Format: date-time
1902
- * @example 2026-07-15T12:03:29.322Z
1903
- */
1904
- estimateUpdatedAt: string | undefined;
1905
- dataPointCount: number;
1906
- };
1907
- variantStats: {
1908
- /** @description Distinct cardType/condition/company/grade combinations */
1909
- variantCount: number;
1910
- looseCount: number;
1911
- gradedCount: number;
1912
- };
480
+ item: components["schemas"]["CatalogItem"];
481
+ dailyStats: components["schemas"]["DailyPricePoint"][];
482
+ estimate: components["schemas"]["EstimatedValue"];
483
+ variantStats: components["schemas"]["VariantStatsSummary"];
1913
484
  };
1914
485
  ItemVariantDailyStats: {
1915
- item: {
1916
- /**
1917
- * @description Resource identifier
1918
- * @example 6a577711abc1ce71383d3e10
1919
- */
1920
- id: string;
1921
- name: string;
1922
- };
1923
- variant: {
1924
- /** @enum {string|null} */
1925
- cardType: "loose" | "graded" | undefined;
1926
- /** @enum {string|null} */
1927
- condition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
1928
- /** @enum {string|null} */
1929
- gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
1930
- grade: number | undefined;
1931
- };
1932
- dailyStats: {
1933
- /**
1934
- * Format: date-time
1935
- * @example 2026-07-15T12:03:29.322Z
1936
- */
1937
- statDate: string;
1938
- /** @example 149.5 */
1939
- averagePrice: number;
1940
- }[];
486
+ item: components["schemas"]["CatalogItemRef"];
487
+ variant: components["schemas"]["VariantSelector"];
488
+ dailyStats: components["schemas"]["DailyPricePoint"][];
489
+ };
490
+ ItemVariantStats: {
491
+ item: components["schemas"]["CatalogItemRef"];
492
+ variants: components["schemas"]["VariantBreakdown"];
493
+ };
494
+ LivePricing: {
495
+ /** @example 149.5 */
496
+ retailPrice: number | undefined;
497
+ /** @example 149.5 */
498
+ estimatedValue: number | undefined;
499
+ shopCount: number;
500
+ pricingDataPoints: number;
501
+ /**
502
+ * Format: date-time
503
+ * @example 2026-07-15T12:03:29.322Z
504
+ */
505
+ calculatedAt: string;
506
+ };
507
+ LivePricingForItem: {
508
+ /**
509
+ * @description Resource identifier
510
+ * @example 6a577711abc1ce71383d3e10
511
+ */
512
+ id: string;
513
+ name: string;
514
+ technicalName: string;
515
+ pricing: components["schemas"]["LivePricing"];
516
+ };
517
+ LowestShopOffer: {
518
+ shop: components["schemas"]["ShopRef"];
519
+ url: string;
520
+ /** @example 149.5 */
521
+ price: number;
522
+ /**
523
+ * @description ISO-4217 currency code
524
+ * @example SEK
525
+ */
526
+ currency: string;
527
+ inStock: boolean;
528
+ inPreorder: boolean;
529
+ inMonitor: boolean;
530
+ isFullyBooked: boolean;
531
+ /**
532
+ * Format: date-time
533
+ * @example 2026-07-15T12:03:29.322Z
534
+ */
535
+ matchedAt: string;
536
+ /**
537
+ * Format: date-time
538
+ * @example 2026-07-15T12:03:29.322Z
539
+ */
540
+ updatedAt: string;
541
+ bargain: {
542
+ discountPercent: number;
543
+ /** @enum {string} */
544
+ referenceSource: "retail" | "tradera" | "cardmarket";
545
+ } | undefined;
1941
546
  };
1942
- ItemVariantStats: {
1943
- item: {
1944
- /**
1945
- * @description Resource identifier
1946
- * @example 6a577711abc1ce71383d3e10
1947
- */
1948
- id: string;
1949
- name: string;
1950
- };
1951
- variants: {
1952
- loose: {
1953
- [key: string]: {
1954
- /** @example 149.5 */
1955
- averagePrice: number;
1956
- dataPointCount: number;
1957
- /**
1958
- * Format: date-time
1959
- * @example 2026-07-15T12:03:29.322Z
1960
- */
1961
- lastSaleDate: string;
1962
- };
1963
- };
1964
- graded: {
1965
- [key: string]: {
1966
- [key: string]: {
1967
- /** @example 149.5 */
1968
- averagePrice: number;
1969
- dataPointCount: number;
1970
- /**
1971
- * Format: date-time
1972
- * @example 2026-07-15T12:03:29.322Z
1973
- */
1974
- lastSaleDate: string;
1975
- };
1976
- };
1977
- };
1978
- };
547
+ MatchShop: {
548
+ /** @example cardlevels */
549
+ technicalName: string;
550
+ /** @example Cardlevels */
551
+ name: string;
552
+ delivery: components["schemas"]["ShopDeliveryTerms"];
1979
553
  };
1980
- LivePricingForItem: {
554
+ MatchedItemRef: {
1981
555
  /**
1982
556
  * @description Resource identifier
1983
557
  * @example 6a577711abc1ce71383d3e10
1984
558
  */
1985
559
  id: string;
560
+ /** @enum {string} */
561
+ kind: "card" | "sealed";
1986
562
  name: string;
563
+ shortName: string | undefined;
1987
564
  technicalName: string;
1988
- pricing: {
1989
- /** @example 149.5 */
1990
- retailPrice: number | undefined;
1991
- /** @example 149.5 */
1992
- estimatedValue: number | undefined;
1993
- shopCount: number;
1994
- pricingDataPoints: number;
1995
- /**
1996
- * Format: date-time
1997
- * @example 2026-07-15T12:03:29.322Z
1998
- */
1999
- calculatedAt: string;
2000
- };
565
+ cardNumber: string | undefined;
566
+ imageUrl: string | undefined;
567
+ language: string | undefined;
568
+ priceChartingId: string | undefined;
2001
569
  };
2002
570
  PackRate: {
2003
571
  /**
@@ -2005,60 +573,8 @@ interface components {
2005
573
  * @example 6a577711abc1ce71383d3e10
2006
574
  */
2007
575
  id: string;
2008
- expansion: {
2009
- /**
2010
- * @description Resource identifier
2011
- * @example 6a577711abc1ce71383d3e10
2012
- */
2013
- id: string;
2014
- /** @example Mega Evolution 30th Celebration */
2015
- name: string;
2016
- /** @example 30th Celebration */
2017
- shortName: string;
2018
- /** @example jpn-mega-evolution-30th-celebration */
2019
- technicalName: string;
2020
- /**
2021
- * @description Printing language of the item
2022
- * @example JPN
2023
- * @enum {string}
2024
- */
2025
- language: "ENG" | "JPN" | "CHI";
2026
- /** @example m6a */
2027
- code: string | undefined;
2028
- /** @example m6a */
2029
- cardCode: string | undefined;
2030
- /** @example Mega Evolution */
2031
- seriesName: string | undefined;
2032
- /**
2033
- * Format: date-time
2034
- * @example 2026-07-15T12:03:29.322Z
2035
- */
2036
- releaseDate: string | undefined;
2037
- /**
2038
- * @description Absolute asset URL, or null when absent
2039
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2040
- */
2041
- logoUrl: string | undefined;
2042
- /**
2043
- * @description Absolute asset URL, or null when absent
2044
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2045
- */
2046
- symbolUrl: string | undefined;
2047
- /**
2048
- * @description Absolute asset URL, or null when absent
2049
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2050
- */
2051
- imageUrl: string | undefined;
2052
- };
2053
- buckets: {
2054
- /** @example Double rare */
2055
- rarity: string;
2056
- /**
2057
- * @description Relative draw weight (normalised across buckets)
2058
- * @example 24
2059
- */
2060
- weight: number;
2061
- }[];
576
+ expansion: components["schemas"]["ExpansionRef"];
577
+ buckets: components["schemas"]["PackRateBucket"][];
2062
578
  /**
2063
579
  * Format: date-time
2064
580
  * @example 2026-07-15T12:03:29.322Z
@@ -2070,6 +586,15 @@ interface components {
2070
586
  */
2071
587
  updatedAt: string;
2072
588
  };
589
+ PackRateBucket: {
590
+ /** @example Double rare */
591
+ rarity: string;
592
+ /**
593
+ * @description Relative draw weight (normalised across buckets)
594
+ * @example 24
595
+ */
596
+ weight: number;
597
+ };
2073
598
  PageMeta: {
2074
599
  /** @description Total matching records, ignoring pagination */
2075
600
  total: number;
@@ -2084,6 +609,70 @@ interface components {
2084
609
  productCount: number;
2085
610
  priceCount: number;
2086
611
  };
612
+ Product: {
613
+ /**
614
+ * @description Resource identifier
615
+ * @example 6a577711abc1ce71383d3e10
616
+ */
617
+ id: string;
618
+ name: string;
619
+ shortName: string | undefined;
620
+ technicalName: string;
621
+ brand: components["schemas"]["Brand"];
622
+ manufacturer: string;
623
+ modelNumber: string | undefined;
624
+ category: components["schemas"]["CategoryRef"] | undefined;
625
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
626
+ /**
627
+ * @description Printing language of the item
628
+ * @example JPN
629
+ * @enum {string|null}
630
+ */
631
+ language: "ENG" | "JPN" | "CHI" | undefined;
632
+ alternativeNames: components["schemas"]["AlternativeName"][];
633
+ supportsMultipackPricing: boolean;
634
+ /**
635
+ * @description Absolute asset URL, or null when absent
636
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
637
+ */
638
+ imageUrl: string | undefined;
639
+ /**
640
+ * @description Cheapest current shop price, in SEK
641
+ * @example 149.5
642
+ */
643
+ retailPrice: number | undefined;
644
+ /**
645
+ * @description Estimated market value, in SEK
646
+ * @example 149.5
647
+ */
648
+ estimatedValue: number | undefined;
649
+ /** @description Active shops currently tracking this item */
650
+ shopCount: number;
651
+ /** @description Observations the estimate rests on */
652
+ pricingDataPoints: number;
653
+ /**
654
+ * Format: date-time
655
+ * @example 2026-07-15T12:03:29.322Z
656
+ */
657
+ pricingUpdatedAt: string | undefined;
658
+ /**
659
+ * Format: date-time
660
+ * @example 2026-07-15T12:03:29.322Z
661
+ */
662
+ createdAt: string;
663
+ /**
664
+ * Format: date-time
665
+ * @example 2026-07-15T12:03:29.322Z
666
+ */
667
+ updatedAt: string;
668
+ /** @enum {string} */
669
+ kind: "sealed";
670
+ upc: string | undefined;
671
+ asin: string | undefined;
672
+ epid: string | undefined;
673
+ priceChartingId: string | undefined;
674
+ prisjaktId: string | undefined;
675
+ };
2087
676
  ProductWithPricing: {
2088
677
  /**
2089
678
  * @description Resource identifier
@@ -2093,95 +682,18 @@ interface components {
2093
682
  name: string;
2094
683
  shortName: string | undefined;
2095
684
  technicalName: string;
2096
- brand: {
2097
- /**
2098
- * @description Resource identifier
2099
- * @example 6a577711abc1ce71383d3e10
2100
- */
2101
- id: string;
2102
- /** @example Pokémon */
2103
- name: string;
2104
- /** @example pokemon */
2105
- technicalName: string;
2106
- /**
2107
- * Format: date-time
2108
- * @example 2026-07-15T12:03:29.322Z
2109
- */
2110
- createdAt: string;
2111
- /**
2112
- * Format: date-time
2113
- * @example 2026-07-15T12:03:29.322Z
2114
- */
2115
- updatedAt: string;
2116
- };
685
+ brand: components["schemas"]["Brand"];
2117
686
  manufacturer: string;
2118
687
  modelNumber: string | undefined;
2119
- category: {
2120
- /**
2121
- * @description Resource identifier
2122
- * @example 6a577711abc1ce71383d3e10
2123
- */
2124
- id: string;
2125
- /** @example Booster Box */
2126
- name: string;
2127
- /** @example booster-box */
2128
- technicalName: string;
2129
- } | undefined;
2130
- expansion: {
2131
- /**
2132
- * @description Resource identifier
2133
- * @example 6a577711abc1ce71383d3e10
2134
- */
2135
- id: string;
2136
- /** @example Mega Evolution 30th Celebration */
2137
- name: string;
2138
- /** @example 30th Celebration */
2139
- shortName: string;
2140
- /** @example jpn-mega-evolution-30th-celebration */
2141
- technicalName: string;
2142
- /**
2143
- * @description Printing language of the item
2144
- * @example JPN
2145
- * @enum {string}
2146
- */
2147
- language: "ENG" | "JPN" | "CHI";
2148
- /** @example m6a */
2149
- code: string | undefined;
2150
- /** @example m6a */
2151
- cardCode: string | undefined;
2152
- /** @example Mega Evolution */
2153
- seriesName: string | undefined;
2154
- /**
2155
- * Format: date-time
2156
- * @example 2026-07-15T12:03:29.322Z
2157
- */
2158
- releaseDate: string | undefined;
2159
- /**
2160
- * @description Absolute asset URL, or null when absent
2161
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2162
- */
2163
- logoUrl: string | undefined;
2164
- /**
2165
- * @description Absolute asset URL, or null when absent
2166
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2167
- */
2168
- symbolUrl: string | undefined;
2169
- /**
2170
- * @description Absolute asset URL, or null when absent
2171
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2172
- */
2173
- imageUrl: string | undefined;
2174
- } | undefined;
688
+ category: components["schemas"]["CategoryRef"] | undefined;
689
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
2175
690
  /**
2176
691
  * @description Printing language of the item
2177
692
  * @example JPN
2178
693
  * @enum {string|null}
2179
694
  */
2180
695
  language: "ENG" | "JPN" | "CHI" | undefined;
2181
- alternativeNames: {
2182
- name: string;
2183
- shortName: string | undefined;
2184
- }[];
696
+ alternativeNames: components["schemas"]["AlternativeName"][];
2185
697
  supportsMultipackPricing: boolean;
2186
698
  /**
2187
699
  * @description Absolute asset URL, or null when absent
@@ -2224,65 +736,56 @@ interface components {
2224
736
  epid: string | undefined;
2225
737
  priceChartingId: string | undefined;
2226
738
  prisjaktId: string | undefined;
2227
- lowestShopOffer: {
2228
- shop: {
2229
- /** @example cardlevels */
2230
- technicalName: string;
2231
- /** @example Cardlevels */
2232
- name: string;
2233
- };
2234
- url: string;
2235
- /** @example 149.5 */
2236
- price: number;
2237
- /**
2238
- * @description ISO-4217 currency code
2239
- * @example SEK
2240
- */
2241
- currency: string;
2242
- inStock: boolean;
2243
- inPreorder: boolean;
2244
- inMonitor: boolean;
2245
- isFullyBooked: boolean;
2246
- /**
2247
- * Format: date-time
2248
- * @example 2026-07-15T12:03:29.322Z
2249
- */
2250
- matchedAt: string;
2251
- /**
2252
- * Format: date-time
2253
- * @example 2026-07-15T12:03:29.322Z
2254
- */
2255
- updatedAt: string;
2256
- bargain: {
2257
- discountPercent: number;
2258
- /** @enum {string} */
2259
- referenceSource: "retail" | "tradera" | "cardmarket";
2260
- } | undefined;
2261
- } | undefined;
739
+ lowestShopOffer: components["schemas"]["LowestShopOffer"] | undefined;
2262
740
  referencePriceSnapshotsByProvider: {
2263
- [key: string]: {
2264
- /** @enum {string} */
2265
- provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
2266
- /** @example 149.5 */
2267
- price: number;
2268
- /**
2269
- * @description ISO-4217 currency code
2270
- * @example SEK
2271
- */
2272
- currency: string;
2273
- /**
2274
- * @description price converted to SEK at the rate stored on the row
2275
- * @example 149.5
2276
- */
2277
- priceSek: number;
2278
- /**
2279
- * Format: date-time
2280
- * @example 2026-07-15T12:03:29.322Z
2281
- */
2282
- snapshotDate: string;
2283
- };
741
+ [key: string]: components["schemas"]["ReferencePriceSummary"];
2284
742
  };
2285
743
  };
744
+ ReferencePriceSeries: {
745
+ /** @enum {string} */
746
+ source: "tcgdex" | "cmapi" | "tradera";
747
+ /** @enum {string} */
748
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
749
+ /** @enum {string|null} */
750
+ variant: "normal" | "holo" | "reverse" | undefined;
751
+ /** @enum {string|null} */
752
+ cardType: "loose" | "graded" | undefined;
753
+ /** @enum {string|null} */
754
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
755
+ grade: number | undefined;
756
+ currency: string;
757
+ sampleSize: number | undefined;
758
+ points: components["schemas"]["ReferencePriceSeriesPoint"][];
759
+ };
760
+ ReferencePriceSeriesPoint: {
761
+ /**
762
+ * Format: date-time
763
+ * @example 2026-07-15T12:03:29.322Z
764
+ */
765
+ snapshotDate: string;
766
+ price: number;
767
+ };
768
+ ReferencePriceSummary: {
769
+ /** @enum {string} */
770
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
771
+ /** @example 149.5 */
772
+ price: number;
773
+ /**
774
+ * @description ISO-4217 currency code
775
+ * @example SEK
776
+ */
777
+ currency: string;
778
+ /**
779
+ * @description price converted to SEK at the rate stored on the row
780
+ * @example 149.5
781
+ */
782
+ priceSek: number;
783
+ /**
784
+ * Format: date-time
785
+ * @example 2026-07-15T12:03:29.322Z
786
+ */
787
+ snapshotDate: string;
788
+ };
2286
789
  Shop: {
2287
790
  /**
2288
791
  * @description Resource identifier
@@ -2327,55 +830,173 @@ interface components {
2327
830
  * Format: date-time
2328
831
  * @example 2026-07-15T12:03:29.322Z
2329
832
  */
2330
- lastMatchedAt: string | undefined;
833
+ lastMatchedAt: string | undefined;
834
+ /**
835
+ * Format: date-time
836
+ * @example 2026-07-15T12:03:29.322Z
837
+ */
838
+ createdAt: string;
839
+ /**
840
+ * Format: date-time
841
+ * @example 2026-07-15T12:03:29.322Z
842
+ */
843
+ updatedAt: string;
844
+ };
845
+ ShopDeliveryTerms: {
846
+ /** @example 149.5 */
847
+ cost: number | undefined;
848
+ currency: string | undefined;
849
+ daysMin: number | undefined;
850
+ daysMax: number | undefined;
851
+ /** @example 149.5 */
852
+ freeShippingThreshold: number | undefined;
853
+ supportsLocalPickup: boolean | undefined;
854
+ note: string | undefined;
855
+ };
856
+ ShopItemPriceHistory: {
857
+ item: components["schemas"]["CatalogItemRef"];
858
+ history: components["schemas"]["ShopPricePoint"][];
859
+ /** @example 149.5 */
860
+ latestPrice: number | undefined;
861
+ /**
862
+ * Format: date-time
863
+ * @example 2026-07-15T12:03:29.322Z
864
+ */
865
+ latestDate: string | undefined;
866
+ };
867
+ ShopMatchStats: {
868
+ shop: components["schemas"]["ShopSummary"];
869
+ matchCount: number;
870
+ /** @description Matches resolved to a catalog item */
871
+ linkedMatchCount: number;
872
+ inStockCount: number;
873
+ preorderCount: number;
874
+ monitorCount: number;
875
+ fullyBookedCount: number;
876
+ /**
877
+ * Format: date-time
878
+ * @example 2026-07-15T12:03:29.322Z
879
+ */
880
+ lastMatchedAt: string | undefined;
881
+ };
882
+ ShopMatchWithItem: {
883
+ /**
884
+ * @description Resource identifier
885
+ * @example 6a577711abc1ce71383d3e10
886
+ */
887
+ id: string;
888
+ shop: components["schemas"]["ShopRef"];
889
+ url: string;
890
+ /**
891
+ * @description Resource identifier
892
+ * @example 6a577711abc1ce71383d3e10
893
+ */
894
+ shopUrlId: string | undefined;
895
+ /** @example 149.5 */
896
+ price: number | undefined;
897
+ /**
898
+ * @description ISO-4217 currency code
899
+ * @example SEK
900
+ */
901
+ currency: string | undefined;
902
+ inStock: boolean;
903
+ inPreorder: boolean;
904
+ inMonitor: boolean;
905
+ isFullyBooked: boolean;
906
+ scrapedName: string | undefined;
907
+ scrapedType: string | undefined;
908
+ matchScore: number | undefined;
909
+ hasCategoryMismatch: boolean;
910
+ /** @enum {string|null} */
911
+ cardType: "loose" | "graded" | undefined;
912
+ /** @enum {string|null} */
913
+ itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
914
+ /** @enum {string|null} */
915
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
916
+ grade: number | undefined;
917
+ item: components["schemas"]["MatchedItemRef"] | undefined;
918
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
919
+ category: components["schemas"]["CategoryRef"] | undefined;
920
+ /**
921
+ * Format: date-time
922
+ * @example 2026-07-15T12:03:29.322Z
923
+ */
924
+ matchedAt: string;
2331
925
  /**
2332
926
  * Format: date-time
2333
927
  * @example 2026-07-15T12:03:29.322Z
2334
928
  */
2335
- createdAt: string;
929
+ updatedAt: string;
930
+ bargain: {
931
+ discountPercent: number;
932
+ /** @enum {string} */
933
+ referenceSource: "retail" | "tradera" | "cardmarket";
934
+ } | undefined;
935
+ };
936
+ ShopMatchesForShop: {
937
+ shop: components["schemas"]["ShopSummary"] | undefined;
938
+ data: components["schemas"]["ShopMatchWithItem"][];
939
+ pagination: components["schemas"]["PageMeta"];
940
+ };
941
+ ShopPriceComparisonRow: {
942
+ shop: string;
943
+ /** @example 149.5 */
944
+ price: number;
945
+ /**
946
+ * @description ISO-4217 currency code
947
+ * @example SEK
948
+ */
949
+ currency: string;
950
+ inStock: boolean;
951
+ url: string;
2336
952
  /**
2337
953
  * Format: date-time
2338
954
  * @example 2026-07-15T12:03:29.322Z
2339
955
  */
2340
- updatedAt: string;
956
+ snapshotDate: string;
2341
957
  };
2342
- ShopMatchStats: {
2343
- shop: {
2344
- technicalName: string;
2345
- name: string;
2346
- logoUrl: string | undefined;
2347
- websiteUrl: string | undefined;
2348
- description: string | undefined;
2349
- isActive: boolean;
2350
- isTemporarilyClosed: boolean;
2351
- isOptedOut: boolean;
2352
- deliveryNote: string | undefined;
2353
- };
2354
- matchCount: number;
2355
- /** @description Matches resolved to a catalog item */
2356
- linkedMatchCount: number;
958
+ ShopPriceComparisonStats: {
959
+ /** @example 149.5 */
960
+ lowestPrice: number;
961
+ /** @example 149.5 */
962
+ highestPrice: number;
963
+ /** @example 149.5 */
964
+ averagePrice: number;
2357
965
  inStockCount: number;
2358
- preorderCount: number;
2359
- monitorCount: number;
2360
- fullyBookedCount: number;
966
+ };
967
+ ShopPriceHistory: {
968
+ /** @description The shop's technicalName */
969
+ shop: string;
970
+ history: components["schemas"]["ShopPricePoint"][];
971
+ };
972
+ ShopPriceHistoryList: {
973
+ shop: string;
974
+ items: components["schemas"]["ShopItemPriceHistory"][];
975
+ itemCount: number;
976
+ };
977
+ ShopPricePoint: {
2361
978
  /**
2362
979
  * Format: date-time
2363
980
  * @example 2026-07-15T12:03:29.322Z
2364
981
  */
2365
- lastMatchedAt: string | undefined;
982
+ snapshotDate: string;
983
+ /** @example 149.5 */
984
+ price: number;
985
+ /**
986
+ * @description ISO-4217 currency code
987
+ * @example SEK
988
+ */
989
+ currency: string;
990
+ inStock: boolean;
991
+ url: string;
2366
992
  };
2367
- ShopMatchWithItem: {
993
+ ShopProductMatch: {
2368
994
  /**
2369
995
  * @description Resource identifier
2370
996
  * @example 6a577711abc1ce71383d3e10
2371
997
  */
2372
998
  id: string;
2373
- shop: {
2374
- /** @example cardlevels */
2375
- technicalName: string;
2376
- /** @example Cardlevels */
2377
- name: string;
2378
- };
999
+ shop: components["schemas"]["MatchShop"];
2379
1000
  url: string;
2380
1001
  /**
2381
1002
  * @description Resource identifier
@@ -2404,78 +1025,6 @@ interface components {
2404
1025
  /** @enum {string|null} */
2405
1026
  gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
2406
1027
  grade: number | undefined;
2407
- item: {
2408
- /**
2409
- * @description Resource identifier
2410
- * @example 6a577711abc1ce71383d3e10
2411
- */
2412
- id: string;
2413
- /** @enum {string} */
2414
- kind: "card" | "sealed";
2415
- name: string;
2416
- shortName: string | undefined;
2417
- technicalName: string;
2418
- cardNumber: string | undefined;
2419
- imageUrl: string | undefined;
2420
- language: string | undefined;
2421
- priceChartingId: string | undefined;
2422
- } | undefined;
2423
- expansion: {
2424
- /**
2425
- * @description Resource identifier
2426
- * @example 6a577711abc1ce71383d3e10
2427
- */
2428
- id: string;
2429
- /** @example Mega Evolution 30th Celebration */
2430
- name: string;
2431
- /** @example 30th Celebration */
2432
- shortName: string;
2433
- /** @example jpn-mega-evolution-30th-celebration */
2434
- technicalName: string;
2435
- /**
2436
- * @description Printing language of the item
2437
- * @example JPN
2438
- * @enum {string}
2439
- */
2440
- language: "ENG" | "JPN" | "CHI";
2441
- /** @example m6a */
2442
- code: string | undefined;
2443
- /** @example m6a */
2444
- cardCode: string | undefined;
2445
- /** @example Mega Evolution */
2446
- seriesName: string | undefined;
2447
- /**
2448
- * Format: date-time
2449
- * @example 2026-07-15T12:03:29.322Z
2450
- */
2451
- releaseDate: string | undefined;
2452
- /**
2453
- * @description Absolute asset URL, or null when absent
2454
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2455
- */
2456
- logoUrl: string | undefined;
2457
- /**
2458
- * @description Absolute asset URL, or null when absent
2459
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2460
- */
2461
- symbolUrl: string | undefined;
2462
- /**
2463
- * @description Absolute asset URL, or null when absent
2464
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2465
- */
2466
- imageUrl: string | undefined;
2467
- } | undefined;
2468
- category: {
2469
- /**
2470
- * @description Resource identifier
2471
- * @example 6a577711abc1ce71383d3e10
2472
- */
2473
- id: string;
2474
- /** @example Booster Box */
2475
- name: string;
2476
- /** @example booster-box */
2477
- technicalName: string;
2478
- } | undefined;
2479
1028
  /**
2480
1029
  * Format: date-time
2481
1030
  * @example 2026-07-15T12:03:29.322Z
@@ -2492,252 +1041,144 @@ interface components {
2492
1041
  referenceSource: "retail" | "tradera" | "cardmarket";
2493
1042
  } | undefined;
2494
1043
  };
2495
- ShopMatchesForShop: {
2496
- shop: {
2497
- technicalName: string;
2498
- name: string;
2499
- logoUrl: string | undefined;
2500
- websiteUrl: string | undefined;
2501
- description: string | undefined;
2502
- isActive: boolean;
2503
- isTemporarilyClosed: boolean;
2504
- isOptedOut: boolean;
2505
- deliveryNote: string | undefined;
2506
- } | undefined;
2507
- data: {
2508
- /**
2509
- * @description Resource identifier
2510
- * @example 6a577711abc1ce71383d3e10
2511
- */
2512
- id: string;
2513
- shop: {
2514
- /** @example cardlevels */
2515
- technicalName: string;
2516
- /** @example Cardlevels */
2517
- name: string;
2518
- };
2519
- url: string;
2520
- /**
2521
- * @description Resource identifier
2522
- * @example 6a577711abc1ce71383d3e10
2523
- */
2524
- shopUrlId: string | undefined;
2525
- /** @example 149.5 */
2526
- price: number | undefined;
2527
- /**
2528
- * @description ISO-4217 currency code
2529
- * @example SEK
2530
- */
2531
- currency: string | undefined;
2532
- inStock: boolean;
2533
- inPreorder: boolean;
2534
- inMonitor: boolean;
2535
- isFullyBooked: boolean;
2536
- scrapedName: string | undefined;
2537
- scrapedType: string | undefined;
2538
- matchScore: number | undefined;
2539
- hasCategoryMismatch: boolean;
2540
- /** @enum {string|null} */
2541
- cardType: "loose" | "graded" | undefined;
2542
- /** @enum {string|null} */
2543
- itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
2544
- /** @enum {string|null} */
2545
- gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
2546
- grade: number | undefined;
2547
- item: {
2548
- /**
2549
- * @description Resource identifier
2550
- * @example 6a577711abc1ce71383d3e10
2551
- */
2552
- id: string;
2553
- /** @enum {string} */
2554
- kind: "card" | "sealed";
2555
- name: string;
2556
- shortName: string | undefined;
2557
- technicalName: string;
2558
- cardNumber: string | undefined;
2559
- imageUrl: string | undefined;
2560
- language: string | undefined;
2561
- priceChartingId: string | undefined;
2562
- } | undefined;
2563
- expansion: {
2564
- /**
2565
- * @description Resource identifier
2566
- * @example 6a577711abc1ce71383d3e10
2567
- */
2568
- id: string;
2569
- /** @example Mega Evolution 30th Celebration */
2570
- name: string;
2571
- /** @example 30th Celebration */
2572
- shortName: string;
2573
- /** @example jpn-mega-evolution-30th-celebration */
2574
- technicalName: string;
2575
- /**
2576
- * @description Printing language of the item
2577
- * @example JPN
2578
- * @enum {string}
2579
- */
2580
- language: "ENG" | "JPN" | "CHI";
2581
- /** @example m6a */
2582
- code: string | undefined;
2583
- /** @example m6a */
2584
- cardCode: string | undefined;
2585
- /** @example Mega Evolution */
2586
- seriesName: string | undefined;
2587
- /**
2588
- * Format: date-time
2589
- * @example 2026-07-15T12:03:29.322Z
2590
- */
2591
- releaseDate: string | undefined;
2592
- /**
2593
- * @description Absolute asset URL, or null when absent
2594
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2595
- */
2596
- logoUrl: string | undefined;
2597
- /**
2598
- * @description Absolute asset URL, or null when absent
2599
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2600
- */
2601
- symbolUrl: string | undefined;
2602
- /**
2603
- * @description Absolute asset URL, or null when absent
2604
- * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2605
- */
2606
- imageUrl: string | undefined;
2607
- } | undefined;
2608
- category: {
2609
- /**
2610
- * @description Resource identifier
2611
- * @example 6a577711abc1ce71383d3e10
2612
- */
2613
- id: string;
2614
- /** @example Booster Box */
2615
- name: string;
2616
- /** @example booster-box */
2617
- technicalName: string;
2618
- } | undefined;
2619
- /**
2620
- * Format: date-time
2621
- * @example 2026-07-15T12:03:29.322Z
2622
- */
2623
- matchedAt: string;
2624
- /**
2625
- * Format: date-time
2626
- * @example 2026-07-15T12:03:29.322Z
2627
- */
2628
- updatedAt: string;
2629
- bargain: {
2630
- discountPercent: number;
2631
- /** @enum {string} */
2632
- referenceSource: "retail" | "tradera" | "cardmarket";
2633
- } | undefined;
2634
- }[];
2635
- pagination: {
2636
- /** @description Total matching records, ignoring pagination */
2637
- total: number;
2638
- limit: number;
2639
- skip: number;
2640
- hasMore: boolean;
2641
- };
1044
+ ShopRef: {
1045
+ /** @example cardlevels */
1046
+ technicalName: string;
1047
+ /** @example Cardlevels */
1048
+ name: string;
2642
1049
  };
2643
- ShopPriceHistoryList: {
2644
- shop: string;
2645
- items: {
2646
- item: {
2647
- /**
2648
- * @description Resource identifier
2649
- * @example 6a577711abc1ce71383d3e10
2650
- */
2651
- id: string;
2652
- name: string;
2653
- };
2654
- history: {
2655
- /**
2656
- * Format: date-time
2657
- * @example 2026-07-15T12:03:29.322Z
2658
- */
2659
- snapshotDate: string;
2660
- /** @example 149.5 */
2661
- price: number;
2662
- /**
2663
- * @description ISO-4217 currency code
2664
- * @example SEK
2665
- */
2666
- currency: string;
2667
- inStock: boolean;
2668
- url: string;
2669
- }[];
2670
- /** @example 149.5 */
2671
- latestPrice: number | undefined;
2672
- /**
2673
- * Format: date-time
2674
- * @example 2026-07-15T12:03:29.322Z
2675
- */
2676
- latestDate: string | undefined;
2677
- }[];
2678
- itemCount: number;
1050
+ ShopSummary: {
1051
+ technicalName: string;
1052
+ name: string;
1053
+ logoUrl: string | undefined;
1054
+ websiteUrl: string | undefined;
1055
+ description: string | undefined;
1056
+ isActive: boolean;
1057
+ isTemporarilyClosed: boolean;
1058
+ isOptedOut: boolean;
1059
+ deliveryNote: string | undefined;
1060
+ };
1061
+ ShopUrl: {
1062
+ /**
1063
+ * @description Resource identifier
1064
+ * @example 6a577711abc1ce71383d3e10
1065
+ */
1066
+ id: string;
1067
+ url: string;
1068
+ shop: string | undefined;
1069
+ status: components["schemas"]["ShopUrlStatus"];
1070
+ /** @enum {string} */
1071
+ discoveredBy: "scraper" | "user";
1072
+ /**
1073
+ * @description Resource identifier
1074
+ * @example 6a577711abc1ce71383d3e10
1075
+ */
1076
+ itemId: string | undefined;
1077
+ /** @enum {string|null} */
1078
+ itemKind: "card" | "sealed" | undefined;
1079
+ lockedItem: boolean;
1080
+ priceChartingId: string | undefined;
1081
+ scrapedName: string | undefined;
1082
+ matchScore: number | undefined;
1083
+ /**
1084
+ * Format: date-time
1085
+ * @example 2026-07-15T12:03:29.322Z
1086
+ */
1087
+ lastMatchedAt: string | undefined;
1088
+ /**
1089
+ * @description Resource identifier
1090
+ * @example 6a577711abc1ce71383d3e10
1091
+ */
1092
+ expansionId: string | undefined;
1093
+ /**
1094
+ * @description Resource identifier
1095
+ * @example 6a577711abc1ce71383d3e10
1096
+ */
1097
+ categoryId: string | undefined;
1098
+ submittedByUserId: string | undefined;
1099
+ /**
1100
+ * Format: date-time
1101
+ * @example 2026-07-15T12:03:29.322Z
1102
+ */
1103
+ createdAt: string;
1104
+ /**
1105
+ * Format: date-time
1106
+ * @example 2026-07-15T12:03:29.322Z
1107
+ */
1108
+ updatedAt: string;
2679
1109
  };
2680
1110
  ShopUrlMutationResult: {
2681
1111
  message: string;
2682
- shopUrl: {
2683
- /**
2684
- * @description Resource identifier
2685
- * @example 6a577711abc1ce71383d3e10
2686
- */
2687
- id: string;
2688
- url: string;
2689
- shop: string | undefined;
2690
- /** @enum {string} */
2691
- status: "pending" | "active" | "invalid" | "rejected" | "sanityRejected";
2692
- /** @enum {string} */
2693
- discoveredBy: "scraper" | "user";
2694
- /**
2695
- * @description Resource identifier
2696
- * @example 6a577711abc1ce71383d3e10
2697
- */
2698
- itemId: string | undefined;
2699
- /** @enum {string|null} */
2700
- itemKind: "card" | "sealed" | undefined;
2701
- lockedItem: boolean;
2702
- priceChartingId: string | undefined;
2703
- scrapedName: string | undefined;
2704
- matchScore: number | undefined;
2705
- /**
2706
- * Format: date-time
2707
- * @example 2026-07-15T12:03:29.322Z
2708
- */
2709
- lastMatchedAt: string | undefined;
2710
- /**
2711
- * @description Resource identifier
2712
- * @example 6a577711abc1ce71383d3e10
2713
- */
2714
- expansionId: string | undefined;
2715
- /**
2716
- * @description Resource identifier
2717
- * @example 6a577711abc1ce71383d3e10
2718
- */
2719
- categoryId: string | undefined;
2720
- submittedByUserId: string | undefined;
2721
- /**
2722
- * Format: date-time
2723
- * @example 2026-07-15T12:03:29.322Z
2724
- */
2725
- createdAt: string;
2726
- /**
2727
- * Format: date-time
2728
- * @example 2026-07-15T12:03:29.322Z
2729
- */
2730
- updatedAt: string;
1112
+ shopUrl: components["schemas"]["ShopUrl"];
1113
+ };
1114
+ /** @enum {string} */
1115
+ ShopUrlStatus: "pending" | "active" | "invalid" | "rejected" | "sanityRejected";
1116
+ SoldPrice: {
1117
+ /**
1118
+ * @description Resource identifier
1119
+ * @example 6a577711abc1ce71383d3e10
1120
+ */
1121
+ id: string;
1122
+ url: string;
1123
+ /** @example 149.5 */
1124
+ price: number;
1125
+ /**
1126
+ * @description ISO-4217 currency code
1127
+ * @example SEK
1128
+ */
1129
+ currency: string;
1130
+ /**
1131
+ * Format: date-time
1132
+ * @example 2026-07-15T12:03:29.322Z
1133
+ */
1134
+ soldAt: string | undefined;
1135
+ itemId: string | undefined;
1136
+ /** @example tradera */
1137
+ source: string | undefined;
1138
+ };
1139
+ TopItem: {
1140
+ /**
1141
+ * @description Resource identifier
1142
+ * @example 6a577711abc1ce71383d3e10
1143
+ */
1144
+ id: string;
1145
+ slug: string | undefined;
1146
+ shopMatchCount: number;
1147
+ };
1148
+ VariantBreakdown: {
1149
+ loose: {
1150
+ [key: string]: components["schemas"]["VariantPriceStats"];
1151
+ };
1152
+ graded: {
1153
+ [key: string]: {
1154
+ [key: string]: components["schemas"]["VariantPriceStats"];
1155
+ };
2731
1156
  };
2732
1157
  };
2733
- TopItem: {
2734
- /**
2735
- * @description Resource identifier
2736
- * @example 6a577711abc1ce71383d3e10
2737
- */
2738
- id: string;
2739
- slug: string | undefined;
2740
- shopMatchCount: number;
1158
+ VariantPriceStats: {
1159
+ /** @example 149.5 */
1160
+ averagePrice: number;
1161
+ dataPointCount: number;
1162
+ /**
1163
+ * Format: date-time
1164
+ * @example 2026-07-15T12:03:29.322Z
1165
+ */
1166
+ lastSaleDate: string;
1167
+ };
1168
+ VariantSelector: {
1169
+ /** @enum {string|null} */
1170
+ cardType: "loose" | "graded" | undefined;
1171
+ /** @enum {string|null} */
1172
+ condition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
1173
+ /** @enum {string|null} */
1174
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
1175
+ grade: number | undefined;
1176
+ };
1177
+ VariantStatsSummary: {
1178
+ /** @description Distinct cardType/condition/company/grade combinations */
1179
+ variantCount: number;
1180
+ looseCount: number;
1181
+ gradedCount: number;
2741
1182
  };
2742
1183
  };
2743
1184
  responses: never;
@@ -2746,21 +1187,119 @@ interface components {
2746
1187
  headers: never;
2747
1188
  pathItems: never;
2748
1189
  }
2749
-
2750
1190
  /**
2751
1191
  * Shared primitives reused across every resource. Pulled from `src/generated/openapi.d.ts` via
2752
1192
  * indexed access instead of retyped by hand, so a field rename in the API is a compile error here,
2753
1193
  * not silent drift.
2754
1194
  *
2755
- * `CardWithPricing` is the extraction source for the nested ref shapes (`brand`, `category`,
2756
- * `expansion`, the shop/bargain shape on `lowestShopOffer`). The API inlines these instead of
2757
- * `$ref`-ing a shared component, so there's no single canonical name to pull from. They're
2758
- * byte-identical across `ProductWithPricing`, `PackRate` and the shop-match schemas too, so picking
2759
- * one as the source of truth works fine.
1195
+ * The API registers `Brand`, `CategoryRef`, `ExpansionRef`, `ShopRef` etc. as their own named
1196
+ * components and `$ref`s them wherever they're embedded (in `CardWithPricing`, `ProductWithPricing`,
1197
+ * `PackRate`, the shop-match schemas, ...), so those are pulled by name directly. `CardWithPricing`
1198
+ * is still the extraction source for the handful of shapes that aren't independently registered
1199
+ * (`lowestShopOffer`'s `bargain`, the reference-price snapshot map).
2760
1200
  */
2761
-
2762
- type CardSchema = components['schemas']['CardWithPricing'];
2763
- type LowestShopOfferSchema = NonNullable<CardSchema['lowestShopOffer']>;
1201
+ type CardSchema = {
1202
+ /**
1203
+ * @description Resource identifier
1204
+ * @example 6a577711abc1ce71383d3e10
1205
+ */
1206
+ id: string;
1207
+ name: string;
1208
+ shortName: string | undefined;
1209
+ technicalName: string;
1210
+ brand: components["schemas"]["Brand"];
1211
+ manufacturer: string;
1212
+ modelNumber: string | undefined;
1213
+ category: components["schemas"]["CategoryRef"] | undefined;
1214
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
1215
+ /**
1216
+ * @description Printing language of the item
1217
+ * @example JPN
1218
+ * @enum {string|null}
1219
+ */
1220
+ language: "ENG" | "JPN" | "CHI" | undefined;
1221
+ alternativeNames: components["schemas"]["AlternativeName"][];
1222
+ supportsMultipackPricing: boolean;
1223
+ /**
1224
+ * @description Absolute asset URL, or null when absent
1225
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1226
+ */
1227
+ imageUrl: string | undefined;
1228
+ /**
1229
+ * @description Cheapest current shop price, in SEK
1230
+ * @example 149.5
1231
+ */
1232
+ retailPrice: number | undefined;
1233
+ /**
1234
+ * @description Estimated market value, in SEK
1235
+ * @example 149.5
1236
+ */
1237
+ estimatedValue: number | undefined;
1238
+ /** @description Active shops currently tracking this item */
1239
+ shopCount: number;
1240
+ /** @description Observations the estimate rests on */
1241
+ pricingDataPoints: number;
1242
+ /**
1243
+ * Format: date-time
1244
+ * @example 2026-07-15T12:03:29.322Z
1245
+ */
1246
+ pricingUpdatedAt: string | undefined;
1247
+ /**
1248
+ * Format: date-time
1249
+ * @example 2026-07-15T12:03:29.322Z
1250
+ */
1251
+ createdAt: string;
1252
+ /**
1253
+ * Format: date-time
1254
+ * @example 2026-07-15T12:03:29.322Z
1255
+ */
1256
+ updatedAt: string;
1257
+ /** @enum {string} */
1258
+ kind: "card";
1259
+ /** @example 4/102 */
1260
+ cardNumber: string;
1261
+ /** @example Rare Holo */
1262
+ rarity: string | undefined;
1263
+ artist: string | undefined;
1264
+ cardmarketId: string | undefined;
1265
+ tcgplayerId: string | undefined;
1266
+ variants: components["schemas"]["CardVariants"] | undefined;
1267
+ prisjaktId: string | undefined;
1268
+ lowestShopOffer: components["schemas"]["LowestShopOffer"] | undefined;
1269
+ referencePriceSnapshotsByProvider: {
1270
+ [key: string]: components["schemas"]["ReferencePriceSummary"];
1271
+ };
1272
+ };
1273
+ type LowestShopOfferSchema = {
1274
+ shop: components["schemas"]["ShopRef"];
1275
+ url: string;
1276
+ /** @example 149.5 */
1277
+ price: number;
1278
+ /**
1279
+ * @description ISO-4217 currency code
1280
+ * @example SEK
1281
+ */
1282
+ currency: string;
1283
+ inStock: boolean;
1284
+ inPreorder: boolean;
1285
+ inMonitor: boolean;
1286
+ isFullyBooked: boolean;
1287
+ /**
1288
+ * Format: date-time
1289
+ * @example 2026-07-15T12:03:29.322Z
1290
+ */
1291
+ matchedAt: string;
1292
+ /**
1293
+ * Format: date-time
1294
+ * @example 2026-07-15T12:03:29.322Z
1295
+ */
1296
+ updatedAt: string;
1297
+ bargain: {
1298
+ discountPercent: number;
1299
+ /** @enum {string} */
1300
+ referenceSource: "retail" | "tradera" | "cardmarket";
1301
+ } | undefined;
1302
+ };
2764
1303
  /** A Mongo ObjectId, always a 24-char lowercase hex string. Just `string`, not a branded type;
2765
1304
  * nothing here needs to tell it apart from any other id at compile time. */
2766
1305
  type ResourceId = string;
@@ -2768,8 +1307,14 @@ type ResourceId = string;
2768
1307
  type CurrencyCode = string;
2769
1308
  /** ISO 8601 timestamp, as returned by the API (always UTC, `Z`-suffixed). */
2770
1309
  type Timestamp = string;
2771
- type PrintingLanguage = NonNullable<CardSchema['language']>;
2772
- type PageMeta = components['schemas']['PageMeta'];
1310
+ type PrintingLanguage = "ENG" | "JPN" | "CHI";
1311
+ type PageMeta = {
1312
+ /** @description Total matching records, ignoring pagination */
1313
+ total: number;
1314
+ limit: number;
1315
+ skip: number;
1316
+ hasMore: boolean;
1317
+ };
2773
1318
  /** The standard paginated list envelope every `list`/`search` method returns. Hand-declared, not
2774
1319
  * generated: the API repeats a fresh anonymous `{ data, pagination }` object per endpoint rather
2775
1320
  * than naming it once. */
@@ -2782,100 +1327,752 @@ interface PaginationParams {
2782
1327
  limit?: number;
2783
1328
  skip?: number;
2784
1329
  }
2785
- type AlternativeName = CardSchema['alternativeNames'][number];
2786
- type BrandRef = CardSchema['brand'];
2787
- type CategoryRef = NonNullable<CardSchema['category']>;
1330
+ type AlternativeName = {
1331
+ name: string;
1332
+ shortName: string | undefined;
1333
+ };
1334
+ type BrandRef = {
1335
+ /**
1336
+ * @description Resource identifier
1337
+ * @example 6a577711abc1ce71383d3e10
1338
+ */
1339
+ id: string;
1340
+ /** @example Pokémon */
1341
+ name: string;
1342
+ /** @example pokemon */
1343
+ technicalName: string;
1344
+ /**
1345
+ * Format: date-time
1346
+ * @example 2026-07-15T12:03:29.322Z
1347
+ */
1348
+ createdAt: string;
1349
+ /**
1350
+ * Format: date-time
1351
+ * @example 2026-07-15T12:03:29.322Z
1352
+ */
1353
+ updatedAt: string;
1354
+ };
1355
+ type CategoryRef = {
1356
+ /**
1357
+ * @description Resource identifier
1358
+ * @example 6a577711abc1ce71383d3e10
1359
+ */
1360
+ id: string;
1361
+ /** @example Booster Box */
1362
+ name: string;
1363
+ /** @example booster-box */
1364
+ technicalName: string;
1365
+ };
2788
1366
  /** The expansion shape embedded on cards, products and pack rates. Not the full `Expansion`
2789
1367
  * returned by `client.expansions.list()`, which additionally carries counts and a `brand`. */
2790
- type ExpansionRef = NonNullable<CardSchema['expansion']>;
1368
+ type ExpansionRef = {
1369
+ /**
1370
+ * @description Resource identifier
1371
+ * @example 6a577711abc1ce71383d3e10
1372
+ */
1373
+ id: string;
1374
+ /** @example Mega Evolution 30th Celebration */
1375
+ name: string;
1376
+ /** @example 30th Celebration */
1377
+ shortName: string;
1378
+ /** @example jpn-mega-evolution-30th-celebration */
1379
+ technicalName: string;
1380
+ /**
1381
+ * @description Printing language of the item
1382
+ * @example JPN
1383
+ * @enum {string}
1384
+ */
1385
+ language: "ENG" | "JPN" | "CHI";
1386
+ /** @example m6a */
1387
+ code: string | undefined;
1388
+ /** @example m6a */
1389
+ cardCode: string | undefined;
1390
+ /** @example Mega Evolution */
1391
+ seriesName: string | undefined;
1392
+ /**
1393
+ * Format: date-time
1394
+ * @example 2026-07-15T12:03:29.322Z
1395
+ */
1396
+ releaseDate: string | undefined;
1397
+ /**
1398
+ * @description Absolute asset URL, or null when absent
1399
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1400
+ */
1401
+ logoUrl: string | undefined;
1402
+ /**
1403
+ * @description Absolute asset URL, or null when absent
1404
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1405
+ */
1406
+ symbolUrl: string | undefined;
1407
+ /**
1408
+ * @description Absolute asset URL, or null when absent
1409
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1410
+ */
1411
+ imageUrl: string | undefined;
1412
+ };
2791
1413
  /** The minimal shop identity embedded on offers and matches. */
2792
- type ShopRef = LowestShopOfferSchema['shop'];
2793
- type BargainReferenceSource = NonNullable<LowestShopOfferSchema['bargain']>['referenceSource'];
1414
+ type ShopRef = {
1415
+ /** @example cardlevels */
1416
+ technicalName: string;
1417
+ /** @example Cardlevels */
1418
+ name: string;
1419
+ };
1420
+ type BargainReferenceSource = "retail" | "tradera" | "cardmarket";
2794
1421
  /** Present on an offer/match when its price is a known-good discount off a reference price. */
2795
- type BargainInfo = NonNullable<LowestShopOfferSchema['bargain']>;
1422
+ type BargainInfo = {
1423
+ discountPercent: number;
1424
+ /** @enum {string} */
1425
+ referenceSource: "retail" | "tradera" | "cardmarket";
1426
+ };
2796
1427
  /** The cheapest current shop offer for a card or product. */
2797
1428
  type LowestShopOffer = LowestShopOfferSchema;
2798
- type ReferencePriceProvider = CardSchema['referencePriceSnapshotsByProvider'][string]['provider'];
2799
- type ReferencePriceSnapshot = CardSchema['referencePriceSnapshotsByProvider'][string];
1429
+ type ReferencePriceProvider = "tradera" | "cardmarket" | "tcgplayer" | "ebay";
1430
+ type ReferencePriceSnapshot = {
1431
+ /** @enum {string} */
1432
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
1433
+ /** @example 149.5 */
1434
+ price: number;
1435
+ /**
1436
+ * @description ISO-4217 currency code
1437
+ * @example SEK
1438
+ */
1439
+ currency: string;
1440
+ /**
1441
+ * @description price converted to SEK at the rate stored on the row
1442
+ * @example 149.5
1443
+ */
1444
+ priceSek: number;
1445
+ /**
1446
+ * Format: date-time
1447
+ * @example 2026-07-15T12:03:29.322Z
1448
+ */
1449
+ snapshotDate: string;
1450
+ };
2800
1451
  /** Keyed by provider, at most one snapshot per provider. */
2801
1452
  type ReferencePriceSnapshotsByProvider = Partial<Record<ReferencePriceProvider, ReferencePriceSnapshot>>;
2802
-
2803
1453
  /** A card, as returned by `client.cards.get()` / `client.cards.list()`, and as embedded in
2804
1454
  * `client.expansions.products()`. `kind: 'card'` is a literal on the generated type, which is what
2805
1455
  * makes `CatalogItem` (below) discriminate cleanly. */
2806
- type Card = components['schemas']['CardWithPricing'];
1456
+ type Card = {
1457
+ /**
1458
+ * @description Resource identifier
1459
+ * @example 6a577711abc1ce71383d3e10
1460
+ */
1461
+ id: string;
1462
+ name: string;
1463
+ shortName: string | undefined;
1464
+ technicalName: string;
1465
+ brand: components["schemas"]["Brand"];
1466
+ manufacturer: string;
1467
+ modelNumber: string | undefined;
1468
+ category: components["schemas"]["CategoryRef"] | undefined;
1469
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
1470
+ /**
1471
+ * @description Printing language of the item
1472
+ * @example JPN
1473
+ * @enum {string|null}
1474
+ */
1475
+ language: "ENG" | "JPN" | "CHI" | undefined;
1476
+ alternativeNames: components["schemas"]["AlternativeName"][];
1477
+ supportsMultipackPricing: boolean;
1478
+ /**
1479
+ * @description Absolute asset URL, or null when absent
1480
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1481
+ */
1482
+ imageUrl: string | undefined;
1483
+ /**
1484
+ * @description Cheapest current shop price, in SEK
1485
+ * @example 149.5
1486
+ */
1487
+ retailPrice: number | undefined;
1488
+ /**
1489
+ * @description Estimated market value, in SEK
1490
+ * @example 149.5
1491
+ */
1492
+ estimatedValue: number | undefined;
1493
+ /** @description Active shops currently tracking this item */
1494
+ shopCount: number;
1495
+ /** @description Observations the estimate rests on */
1496
+ pricingDataPoints: number;
1497
+ /**
1498
+ * Format: date-time
1499
+ * @example 2026-07-15T12:03:29.322Z
1500
+ */
1501
+ pricingUpdatedAt: string | undefined;
1502
+ /**
1503
+ * Format: date-time
1504
+ * @example 2026-07-15T12:03:29.322Z
1505
+ */
1506
+ createdAt: string;
1507
+ /**
1508
+ * Format: date-time
1509
+ * @example 2026-07-15T12:03:29.322Z
1510
+ */
1511
+ updatedAt: string;
1512
+ /** @enum {string} */
1513
+ kind: "card";
1514
+ /** @example 4/102 */
1515
+ cardNumber: string;
1516
+ /** @example Rare Holo */
1517
+ rarity: string | undefined;
1518
+ artist: string | undefined;
1519
+ cardmarketId: string | undefined;
1520
+ tcgplayerId: string | undefined;
1521
+ variants: components["schemas"]["CardVariants"] | undefined;
1522
+ prisjaktId: string | undefined;
1523
+ lowestShopOffer: components["schemas"]["LowestShopOffer"] | undefined;
1524
+ referencePriceSnapshotsByProvider: {
1525
+ [key: string]: components["schemas"]["ReferencePriceSummary"];
1526
+ };
1527
+ };
2807
1528
  /** A sealed product (booster box, ETB, tin, ...), as returned by `client.products.get()` /
2808
1529
  * `client.products.list()`. `kind: 'sealed'` is a literal on the generated type. */
2809
- type SealedProduct = components['schemas']['ProductWithPricing'];
1530
+ type SealedProduct = {
1531
+ /**
1532
+ * @description Resource identifier
1533
+ * @example 6a577711abc1ce71383d3e10
1534
+ */
1535
+ id: string;
1536
+ name: string;
1537
+ shortName: string | undefined;
1538
+ technicalName: string;
1539
+ brand: components["schemas"]["Brand"];
1540
+ manufacturer: string;
1541
+ modelNumber: string | undefined;
1542
+ category: components["schemas"]["CategoryRef"] | undefined;
1543
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
1544
+ /**
1545
+ * @description Printing language of the item
1546
+ * @example JPN
1547
+ * @enum {string|null}
1548
+ */
1549
+ language: "ENG" | "JPN" | "CHI" | undefined;
1550
+ alternativeNames: components["schemas"]["AlternativeName"][];
1551
+ supportsMultipackPricing: boolean;
1552
+ /**
1553
+ * @description Absolute asset URL, or null when absent
1554
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1555
+ */
1556
+ imageUrl: string | undefined;
1557
+ /**
1558
+ * @description Cheapest current shop price, in SEK
1559
+ * @example 149.5
1560
+ */
1561
+ retailPrice: number | undefined;
1562
+ /**
1563
+ * @description Estimated market value, in SEK
1564
+ * @example 149.5
1565
+ */
1566
+ estimatedValue: number | undefined;
1567
+ /** @description Active shops currently tracking this item */
1568
+ shopCount: number;
1569
+ /** @description Observations the estimate rests on */
1570
+ pricingDataPoints: number;
1571
+ /**
1572
+ * Format: date-time
1573
+ * @example 2026-07-15T12:03:29.322Z
1574
+ */
1575
+ pricingUpdatedAt: string | undefined;
1576
+ /**
1577
+ * Format: date-time
1578
+ * @example 2026-07-15T12:03:29.322Z
1579
+ */
1580
+ createdAt: string;
1581
+ /**
1582
+ * Format: date-time
1583
+ * @example 2026-07-15T12:03:29.322Z
1584
+ */
1585
+ updatedAt: string;
1586
+ /** @enum {string} */
1587
+ kind: "sealed";
1588
+ upc: string | undefined;
1589
+ asin: string | undefined;
1590
+ epid: string | undefined;
1591
+ priceChartingId: string | undefined;
1592
+ prisjaktId: string | undefined;
1593
+ lowestShopOffer: components["schemas"]["LowestShopOffer"] | undefined;
1594
+ referencePriceSnapshotsByProvider: {
1595
+ [key: string]: components["schemas"]["ReferencePriceSummary"];
1596
+ };
1597
+ };
2810
1598
  /** A card or sealed product, discriminated on `kind`. */
2811
1599
  type CatalogItem = Card | SealedProduct;
2812
- type CardVariants = NonNullable<Card['variants']>;
1600
+ type CardVariants = {
1601
+ normal: boolean;
1602
+ holo: boolean;
1603
+ reverse: boolean;
1604
+ firstEdition: boolean;
1605
+ wPromo: boolean;
1606
+ };
2813
1607
  /** The compact item reference used inside flat shop-match rows (`client.shopMatches.list()` /
2814
1608
  * `.forShop()`), enough to render a result list, not the full `CatalogItem`. */
2815
- type MatchedItemRef = NonNullable<components['schemas']['ShopMatchWithItem']['item']>;
1609
+ type MatchedItemRef = {
1610
+ /**
1611
+ * @description Resource identifier
1612
+ * @example 6a577711abc1ce71383d3e10
1613
+ */
1614
+ id: string;
1615
+ /** @enum {string} */
1616
+ kind: "card" | "sealed";
1617
+ name: string;
1618
+ shortName: string | undefined;
1619
+ technicalName: string;
1620
+ cardNumber: string | undefined;
1621
+ imageUrl: string | undefined;
1622
+ language: string | undefined;
1623
+ priceChartingId: string | undefined;
1624
+ };
2816
1625
  /** One shop listing currently discounted relative to a reference price (retail, Tradera, or
2817
1626
  * Cardmarket). Returned by `client.bargains.list()` / `client.bargains.search()`. */
2818
- type Bargain = components['schemas']['BargainListResponse']['data'][number];
2819
- type BargainProductRef = Bargain['product'];
2820
-
1627
+ type Bargain = {
1628
+ url: string;
1629
+ /** @example 149.5 */
1630
+ price: number | undefined;
1631
+ /**
1632
+ * @description ISO-4217 currency code
1633
+ * @example SEK
1634
+ */
1635
+ currency: string | undefined;
1636
+ shop: components["schemas"]["ShopRef"];
1637
+ inStock: boolean;
1638
+ /**
1639
+ * Format: date-time
1640
+ * @example 2026-07-15T12:03:29.322Z
1641
+ */
1642
+ matchedAt: string;
1643
+ product: {
1644
+ /**
1645
+ * @description Resource identifier
1646
+ * @example 6a577711abc1ce71383d3e10
1647
+ */
1648
+ id: string;
1649
+ /** @enum {string} */
1650
+ kind: "sealed" | "card";
1651
+ name: string;
1652
+ technicalName: string;
1653
+ imageUrl: string | undefined;
1654
+ };
1655
+ bargain: {
1656
+ discountPercent: number;
1657
+ /** @enum {string} */
1658
+ referenceSource: "retail" | "tradera" | "cardmarket";
1659
+ };
1660
+ };
1661
+ type BargainProductRef = {
1662
+ /**
1663
+ * @description Resource identifier
1664
+ * @example 6a577711abc1ce71383d3e10
1665
+ */
1666
+ id: string;
1667
+ /** @enum {string} */
1668
+ kind: "sealed" | "card";
1669
+ name: string;
1670
+ technicalName: string;
1671
+ imageUrl: string | undefined;
1672
+ };
2821
1673
  /** A set/expansion, as returned by `client.expansions.list()`. This is the full record. The
2822
1674
  * `expansion` field embedded on a card or product is the smaller `ExpansionRef` from
2823
1675
  * `types/common.ts`. */
2824
- type Expansion = components['schemas']['Expansion'];
1676
+ type Expansion = {
1677
+ /**
1678
+ * @description Resource identifier
1679
+ * @example 6a577711abc1ce71383d3e10
1680
+ */
1681
+ id: string;
1682
+ /** @example Mega Evolution 30th Celebration */
1683
+ name: string;
1684
+ /** @example 30th Celebration */
1685
+ shortName: string;
1686
+ /** @example jpn-mega-evolution-30th-celebration */
1687
+ technicalName: string;
1688
+ /**
1689
+ * @description Printing language of the item
1690
+ * @example JPN
1691
+ * @enum {string}
1692
+ */
1693
+ language: "ENG" | "JPN" | "CHI";
1694
+ /** @example m6a */
1695
+ code: string | undefined;
1696
+ /** @example m6a */
1697
+ cardCode: string | undefined;
1698
+ /** @example Mega Evolution */
1699
+ seriesName: string | undefined;
1700
+ /**
1701
+ * Format: date-time
1702
+ * @example 2026-07-15T12:03:29.322Z
1703
+ */
1704
+ releaseDate: string | undefined;
1705
+ /**
1706
+ * @description Absolute asset URL, or null when absent
1707
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1708
+ */
1709
+ logoUrl: string | undefined;
1710
+ /**
1711
+ * @description Absolute asset URL, or null when absent
1712
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1713
+ */
1714
+ symbolUrl: string | undefined;
1715
+ /**
1716
+ * @description Absolute asset URL, or null when absent
1717
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1718
+ */
1719
+ imageUrl: string | undefined;
1720
+ year: number | undefined;
1721
+ brand: components["schemas"]["Brand"];
1722
+ alternativeNames: components["schemas"]["AlternativeName"][];
1723
+ /** @description Sealed products in this expansion */
1724
+ sealedCount: number;
1725
+ /** @description Cards in this expansion */
1726
+ cardCount: number;
1727
+ /** @description Sealed products plus cards */
1728
+ productCount: number;
1729
+ /**
1730
+ * Format: date-time
1731
+ * @example 2026-07-15T12:03:29.322Z
1732
+ */
1733
+ createdAt: string;
1734
+ /**
1735
+ * Format: date-time
1736
+ * @example 2026-07-15T12:03:29.322Z
1737
+ */
1738
+ updatedAt: string;
1739
+ };
2825
1740
  /** Response of `client.expansions.products()`: everything in one expansion, cards and sealed
2826
1741
  * products kept as separate `cards`/`sealed` groups rather than merged into one mixed list. */
2827
- type ExpansionContents = components['schemas']['ExpansionContents'];
2828
-
2829
- type ShopMatchWithItemSchema = components['schemas']['ShopMatchWithItem'];
2830
- type ItemShopMatchSchema = components['schemas']['ItemShopMatches']['data'][number];
1742
+ type ExpansionContents = {
1743
+ expansion: components["schemas"]["ExpansionRef"];
1744
+ cards: {
1745
+ count: number;
1746
+ items: components["schemas"]["CardWithPricing"][];
1747
+ };
1748
+ sealed: {
1749
+ count: number;
1750
+ items: components["schemas"]["ProductWithPricing"][];
1751
+ };
1752
+ };
1753
+ /** One card as embedded in `client.expansions.products()`'s `cards` group. `$ref`s `CardWithPricing`
1754
+ * on the wire, so this is literally `Card` — kept as its own name since a card found through an
1755
+ * expansion's contents reads more naturally as `ExpansionCard` at the call site. */
1756
+ type ExpansionCard = Card;
1757
+ /** One sealed product as embedded in `client.expansions.products()`'s `sealed` group. Literally
1758
+ * `SealedProduct`, same reasoning as `ExpansionCard`. */
1759
+ type ExpansionSealedProduct = SealedProduct;
1760
+ type ShopMatchWithItemSchema = {
1761
+ /**
1762
+ * @description Resource identifier
1763
+ * @example 6a577711abc1ce71383d3e10
1764
+ */
1765
+ id: string;
1766
+ shop: components["schemas"]["ShopRef"];
1767
+ url: string;
1768
+ /**
1769
+ * @description Resource identifier
1770
+ * @example 6a577711abc1ce71383d3e10
1771
+ */
1772
+ shopUrlId: string | undefined;
1773
+ /** @example 149.5 */
1774
+ price: number | undefined;
1775
+ /**
1776
+ * @description ISO-4217 currency code
1777
+ * @example SEK
1778
+ */
1779
+ currency: string | undefined;
1780
+ inStock: boolean;
1781
+ inPreorder: boolean;
1782
+ inMonitor: boolean;
1783
+ isFullyBooked: boolean;
1784
+ scrapedName: string | undefined;
1785
+ scrapedType: string | undefined;
1786
+ matchScore: number | undefined;
1787
+ hasCategoryMismatch: boolean;
1788
+ /** @enum {string|null} */
1789
+ cardType: "loose" | "graded" | undefined;
1790
+ /** @enum {string|null} */
1791
+ itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
1792
+ /** @enum {string|null} */
1793
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
1794
+ grade: number | undefined;
1795
+ item: components["schemas"]["MatchedItemRef"] | undefined;
1796
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
1797
+ category: components["schemas"]["CategoryRef"] | undefined;
1798
+ /**
1799
+ * Format: date-time
1800
+ * @example 2026-07-15T12:03:29.322Z
1801
+ */
1802
+ matchedAt: string;
1803
+ /**
1804
+ * Format: date-time
1805
+ * @example 2026-07-15T12:03:29.322Z
1806
+ */
1807
+ updatedAt: string;
1808
+ bargain: {
1809
+ discountPercent: number;
1810
+ /** @enum {string} */
1811
+ referenceSource: "retail" | "tradera" | "cardmarket";
1812
+ } | undefined;
1813
+ };
1814
+ type ItemShopMatchSchema = {
1815
+ /**
1816
+ * @description Resource identifier
1817
+ * @example 6a577711abc1ce71383d3e10
1818
+ */
1819
+ id: string;
1820
+ shop: components["schemas"]["MatchShop"];
1821
+ url: string;
1822
+ /**
1823
+ * @description Resource identifier
1824
+ * @example 6a577711abc1ce71383d3e10
1825
+ */
1826
+ shopUrlId: string | undefined;
1827
+ /** @example 149.5 */
1828
+ price: number | undefined;
1829
+ /**
1830
+ * @description ISO-4217 currency code
1831
+ * @example SEK
1832
+ */
1833
+ currency: string | undefined;
1834
+ inStock: boolean;
1835
+ inPreorder: boolean;
1836
+ inMonitor: boolean;
1837
+ isFullyBooked: boolean;
1838
+ scrapedName: string | undefined;
1839
+ scrapedType: string | undefined;
1840
+ matchScore: number | undefined;
1841
+ hasCategoryMismatch: boolean;
1842
+ /** @enum {string|null} */
1843
+ cardType: "loose" | "graded" | undefined;
1844
+ /** @enum {string|null} */
1845
+ itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
1846
+ /** @enum {string|null} */
1847
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
1848
+ grade: number | undefined;
1849
+ /**
1850
+ * Format: date-time
1851
+ * @example 2026-07-15T12:03:29.322Z
1852
+ */
1853
+ matchedAt: string;
1854
+ /**
1855
+ * Format: date-time
1856
+ * @example 2026-07-15T12:03:29.322Z
1857
+ */
1858
+ updatedAt: string;
1859
+ bargain: {
1860
+ discountPercent: number;
1861
+ /** @enum {string} */
1862
+ referenceSource: "retail" | "tradera" | "cardmarket";
1863
+ } | undefined;
1864
+ };
2831
1865
  /** A shop tracked by tcgpriser, as returned by `client.shops.list()` / `client.shops.get()`. The
2832
1866
  * `*Count` fields are `undefined` when the shop has never had a match computed (rather than `0`, which
2833
1867
  * would mean "matched, currently empty"). */
2834
- type Shop = components['schemas']['Shop'];
1868
+ type Shop = {
1869
+ /**
1870
+ * @description Resource identifier
1871
+ * @example 6a577711abc1ce71383d3e10
1872
+ */
1873
+ id: string;
1874
+ /** @example Cardlevels */
1875
+ name: string;
1876
+ /** @example cardlevels */
1877
+ technicalName: string;
1878
+ websiteUrl: string | undefined;
1879
+ /**
1880
+ * @description Absolute asset URL, or null when absent
1881
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
1882
+ */
1883
+ logoUrl: string | undefined;
1884
+ description: string | undefined;
1885
+ /** @example 149.5 */
1886
+ defaultDeliveryCost: number | undefined;
1887
+ /**
1888
+ * @description ISO-4217, or null
1889
+ * @example SEK
1890
+ */
1891
+ deliveryCurrency: string | undefined;
1892
+ deliveryDaysMin: number | undefined;
1893
+ deliveryDaysMax: number | undefined;
1894
+ /** @example 149.5 */
1895
+ freeShippingThreshold: number | undefined;
1896
+ supportsLocalPickup: boolean;
1897
+ deliveryNote: string | undefined;
1898
+ isActive: boolean;
1899
+ isTemporarilyClosed: boolean;
1900
+ isOptedOut: boolean;
1901
+ matchCount: number | undefined;
1902
+ /** @description Matches resolved to a catalog item */
1903
+ linkedMatchCount: number | undefined;
1904
+ inStockCount: number | undefined;
1905
+ preorderCount: number | undefined;
1906
+ monitorCount: number | undefined;
1907
+ fullyBookedCount: number | undefined;
1908
+ /**
1909
+ * Format: date-time
1910
+ * @example 2026-07-15T12:03:29.322Z
1911
+ */
1912
+ lastMatchedAt: string | undefined;
1913
+ /**
1914
+ * Format: date-time
1915
+ * @example 2026-07-15T12:03:29.322Z
1916
+ */
1917
+ createdAt: string;
1918
+ /**
1919
+ * Format: date-time
1920
+ * @example 2026-07-15T12:03:29.322Z
1921
+ */
1922
+ updatedAt: string;
1923
+ };
2835
1924
  /** The lighter shop shape embedded in shop-match responses: a subset of `Shop`, no id or delivery
2836
1925
  * cost breakdown. */
2837
- type ShopSummary = components['schemas']['ShopMatchStats']['shop'];
2838
- type CardType = NonNullable<ShopMatchWithItemSchema['cardType']>;
2839
- type ItemCondition = NonNullable<ShopMatchWithItemSchema['itemCondition']>;
2840
- type GradingCompany = NonNullable<ShopMatchWithItemSchema['gradingCompany']>;
1926
+ type ShopSummary = {
1927
+ technicalName: string;
1928
+ name: string;
1929
+ logoUrl: string | undefined;
1930
+ websiteUrl: string | undefined;
1931
+ description: string | undefined;
1932
+ isActive: boolean;
1933
+ isTemporarilyClosed: boolean;
1934
+ isOptedOut: boolean;
1935
+ deliveryNote: string | undefined;
1936
+ };
1937
+ type CardType = "loose" | "graded";
1938
+ type ItemCondition = "NM" | "LP" | "MP" | "HP" | "DMG";
1939
+ type GradingCompany = "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA";
2841
1940
  /** A shop's listing matched (or not yet matched) to a catalog item. Returned by
2842
1941
  * `client.shopMatches.list()` and as the rows inside `client.shopMatches.forShop()`. */
2843
1942
  type ShopMatch = ShopMatchWithItemSchema;
2844
- type ShopMatchDelivery = ItemShopMatchSchema['shop']['delivery'];
1943
+ type ShopMatchDelivery = {
1944
+ /** @example 149.5 */
1945
+ cost: number | undefined;
1946
+ currency: string | undefined;
1947
+ daysMin: number | undefined;
1948
+ daysMax: number | undefined;
1949
+ /** @example 149.5 */
1950
+ freeShippingThreshold: number | undefined;
1951
+ supportsLocalPickup: boolean | undefined;
1952
+ note: string | undefined;
1953
+ };
2845
1954
  /** A shop-match row scoped to one already-known item. `client.cards.matches()` and
2846
1955
  * `client.products.matches()` drop `item`/`expansion`/`category` since the caller already has
2847
1956
  * them, but add delivery terms since you're looking at one listing's total cost here. */
2848
1957
  type ItemShopMatch = ItemShopMatchSchema;
2849
1958
  /** Response of `client.cards.matches()` / `client.products.matches()`. */
2850
- type ItemShopMatches = components['schemas']['ItemShopMatches'];
1959
+ type ItemShopMatches = {
1960
+ item: components["schemas"]["CatalogItemRef"];
1961
+ data: components["schemas"]["ShopProductMatch"][];
1962
+ pagination: components["schemas"]["PageMeta"];
1963
+ };
2851
1964
  /** Response of `client.shopMatches.forShop()`: every match, of any item, currently live at one shop. */
2852
- type ShopMatchesForShop = components['schemas']['ShopMatchesForShop'];
1965
+ type ShopMatchesForShop = {
1966
+ shop: components["schemas"]["ShopSummary"] | undefined;
1967
+ data: components["schemas"]["ShopMatchWithItem"][];
1968
+ pagination: components["schemas"]["PageMeta"];
1969
+ };
2853
1970
  /** One row of `client.shopMatches.shopStats()`: match counts per shop, not the matches themselves. */
2854
- type ShopMatchStats = components['schemas']['ShopMatchStats'];
2855
-
1971
+ type ShopMatchStats = {
1972
+ shop: components["schemas"]["ShopSummary"];
1973
+ matchCount: number;
1974
+ /** @description Matches resolved to a catalog item */
1975
+ linkedMatchCount: number;
1976
+ inStockCount: number;
1977
+ preorderCount: number;
1978
+ monitorCount: number;
1979
+ fullyBookedCount: number;
1980
+ /**
1981
+ * Format: date-time
1982
+ * @example 2026-07-15T12:03:29.322Z
1983
+ */
1984
+ lastMatchedAt: string | undefined;
1985
+ };
2856
1986
  /** A named `{ id, name }` reference to a card or product: the compact identity used by every
2857
1987
  * `price-stats` response, which is keyed by item rather than embedding the full catalog record. */
2858
- type ItemRef = components['schemas']['ItemDailyStats']['item'];
1988
+ type ItemRef = {
1989
+ /**
1990
+ * @description Resource identifier
1991
+ * @example 6a577711abc1ce71383d3e10
1992
+ */
1993
+ id: string;
1994
+ name: string;
1995
+ };
2859
1996
  /** One day's average price for one item. */
2860
- type DailyPricePoint = components['schemas']['ItemDailyStats']['dailyStats'][number];
1997
+ type DailyPricePoint = {
1998
+ /**
1999
+ * Format: date-time
2000
+ * @example 2026-07-15T12:03:29.322Z
2001
+ */
2002
+ statDate: string;
2003
+ /** @example 149.5 */
2004
+ averagePrice: number;
2005
+ };
2861
2006
  /** Response row of `client.priceStats.daily()`. */
2862
- type ItemDailyStats = components['schemas']['ItemDailyStats'];
2863
- type EstimatedValue = components['schemas']['ItemEstimatedValue']['estimate'];
2007
+ type ItemDailyStats = {
2008
+ item: components["schemas"]["CatalogItemRef"];
2009
+ dailyStats: components["schemas"]["DailyPricePoint"][];
2010
+ };
2011
+ type EstimatedValue = {
2012
+ /** @example 149.5 */
2013
+ estimatedValue: number | undefined;
2014
+ /**
2015
+ * Format: date-time
2016
+ * @example 2026-07-15T12:03:29.322Z
2017
+ */
2018
+ estimateUpdatedAt: string | undefined;
2019
+ dataPointCount: number;
2020
+ };
2864
2021
  /** Response row of `client.priceStats.estimatedValues()`. */
2865
- type ItemEstimatedValue = components['schemas']['ItemEstimatedValue'];
2022
+ type ItemEstimatedValue = {
2023
+ item: components["schemas"]["CatalogItemRef"];
2024
+ estimate: components["schemas"]["EstimatedValue"];
2025
+ };
2866
2026
  /** Response row of `client.priceStats.topProducts()`: items ranked by shop availability, not price. */
2867
- type TopItem = components['schemas']['TopItem'];
2868
-
2027
+ type TopItem = {
2028
+ /**
2029
+ * @description Resource identifier
2030
+ * @example 6a577711abc1ce71383d3e10
2031
+ */
2032
+ id: string;
2033
+ slug: string | undefined;
2034
+ shopMatchCount: number;
2035
+ };
2869
2036
  /** One rarity's share of a booster pack's pulls. `weight` is relative to the other buckets in the
2870
2037
  * same pack rate, not a percentage. Normalise across `buckets` yourself if you need one. */
2871
- type PackRateBucket = components['schemas']['PackRate']['buckets'][number];
2038
+ type PackRateBucket = {
2039
+ /** @example Double rare */
2040
+ rarity: string;
2041
+ /**
2042
+ * @description Relative draw weight (normalised across buckets)
2043
+ * @example 24
2044
+ */
2045
+ weight: number;
2046
+ };
2872
2047
  /** Pull-rate odds for one expansion's booster packs, as returned by `client.packRates.list()` /
2873
2048
  * `client.packRates.get()`. */
2874
- type PackRate = components['schemas']['PackRate'];
2875
-
2049
+ type PackRate = {
2050
+ /**
2051
+ * @description Resource identifier
2052
+ * @example 6a577711abc1ce71383d3e10
2053
+ */
2054
+ id: string;
2055
+ expansion: components["schemas"]["ExpansionRef"];
2056
+ buckets: components["schemas"]["PackRateBucket"][];
2057
+ /**
2058
+ * Format: date-time
2059
+ * @example 2026-07-15T12:03:29.322Z
2060
+ */
2061
+ createdAt: string;
2062
+ /**
2063
+ * Format: date-time
2064
+ * @example 2026-07-15T12:03:29.322Z
2065
+ */
2066
+ updatedAt: string;
2067
+ };
2876
2068
  /** Platform-wide overview counts, returned by `client.stats.platform()`. */
2877
- type PlatformStats = components['schemas']['PlatformStats'];
2878
-
2069
+ type PlatformStats = {
2070
+ shopCount: number;
2071
+ categoryCount: number;
2072
+ expansionCount: number;
2073
+ productCount: number;
2074
+ priceCount: number;
2075
+ };
2879
2076
  /**
2880
2077
  * Types for the premium tier: endpoints that need a signed-in subscriber's JWT (see
2881
2078
  * `TcgPriserOptions.authToken`, or the `authToken` field on each premium method's params). Split
@@ -2884,13 +2081,34 @@ type PlatformStats = components['schemas']['PlatformStats'];
2884
2081
  *
2885
2082
  * Derived from `src/generated/openapi.d.ts`, same as everything else in this directory.
2886
2083
  */
2887
-
2888
- type ReferencePriceSeries = components['schemas']['ItemReferencePrices']['series'][number];
2889
- type ReferencePriceSeriesPoint = ReferencePriceSeries['points'][number];
2890
- type ReferencePriceSource = ReferencePriceSeries['source'];
2891
- type ReferencePriceCardVariant = NonNullable<ReferencePriceSeries['variant']>;
2892
- type ReferencePriceMetric = components['schemas']['ItemReferencePrices']['metric'];
2893
- type ReferencePriceCurrencyMode = components['schemas']['ItemReferencePrices']['currencyMode'];
2084
+ type ReferencePriceSeries = {
2085
+ /** @enum {string} */
2086
+ source: "tcgdex" | "cmapi" | "tradera";
2087
+ /** @enum {string} */
2088
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
2089
+ /** @enum {string|null} */
2090
+ variant: "normal" | "holo" | "reverse" | undefined;
2091
+ /** @enum {string|null} */
2092
+ cardType: "loose" | "graded" | undefined;
2093
+ /** @enum {string|null} */
2094
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
2095
+ grade: number | undefined;
2096
+ currency: string;
2097
+ sampleSize: number | undefined;
2098
+ points: components["schemas"]["ReferencePriceSeriesPoint"][];
2099
+ };
2100
+ type ReferencePriceSeriesPoint = {
2101
+ /**
2102
+ * Format: date-time
2103
+ * @example 2026-07-15T12:03:29.322Z
2104
+ */
2105
+ snapshotDate: string;
2106
+ price: number;
2107
+ };
2108
+ type ReferencePriceSource = "tradera" | "tcgdex" | "cmapi";
2109
+ type ReferencePriceCardVariant = "normal" | "holo" | "reverse";
2110
+ type ReferencePriceMetric = "price" | "low" | "mid" | "high" | "avg" | "avg1" | "avg7" | "avg30" | "directLow";
2111
+ type ReferencePriceCurrencyMode = "native" | "sek";
2894
2112
  /** Response of `client.cards.referencePrices()` / `client.products.referencePrices()`.
2895
2113
  *
2896
2114
  * Non-graded card prices come from TCGdex and are variant-aware (normal / holo / reverse). Graded
@@ -2898,61 +2116,413 @@ type ReferencePriceCurrencyMode = components['schemas']['ItemReferencePrices']['
2898
2116
  * auction sales rather than asking prices, always SEK, no variant. In native mode each series
2899
2117
  * keeps its own `currency`; in `sek` mode everything is `SEK`, converted at the rate stored on
2900
2118
  * each point. */
2901
- type ItemReferencePrices = components['schemas']['ItemReferencePrices'];
2902
- type SoldPrice = components['schemas']['ItemSoldPrices']['data'][number];
2119
+ type ItemReferencePrices = {
2120
+ item: components["schemas"]["CatalogItemRef"];
2121
+ /**
2122
+ * Format: date-time
2123
+ * @example 2026-07-15T12:03:29.322Z
2124
+ */
2125
+ fromDate: string;
2126
+ /**
2127
+ * Format: date-time
2128
+ * @example 2026-07-15T12:03:29.322Z
2129
+ */
2130
+ toDate: string;
2131
+ /** @enum {string} */
2132
+ metric: "price" | "low" | "mid" | "high" | "avg" | "avg1" | "avg7" | "avg30" | "directLow";
2133
+ /** @enum {string} */
2134
+ currencyMode: "native" | "sek";
2135
+ series: components["schemas"]["ReferencePriceSeries"][];
2136
+ };
2137
+ type SoldPrice = {
2138
+ /**
2139
+ * @description Resource identifier
2140
+ * @example 6a577711abc1ce71383d3e10
2141
+ */
2142
+ id: string;
2143
+ url: string;
2144
+ /** @example 149.5 */
2145
+ price: number;
2146
+ /**
2147
+ * @description ISO-4217 currency code
2148
+ * @example SEK
2149
+ */
2150
+ currency: string;
2151
+ /**
2152
+ * Format: date-time
2153
+ * @example 2026-07-15T12:03:29.322Z
2154
+ */
2155
+ soldAt: string | undefined;
2156
+ itemId: string | undefined;
2157
+ /** @example tradera */
2158
+ source: string | undefined;
2159
+ };
2903
2160
  /** Response of `client.cards.prices()` / `client.products.prices()`. `premiumRequired` is always
2904
2161
  * `true` here. That field only exists because this envelope shape is shared with a free preview
2905
2162
  * elsewhere in the API; this response is never the preview. */
2906
- type ItemSoldPrices = components['schemas']['ItemSoldPrices'];
2907
- type LivePricingDetail = components['schemas']['LivePricingForItem']['pricing'];
2163
+ type ItemSoldPrices = {
2164
+ item: components["schemas"]["CatalogItemRef"];
2165
+ data: components["schemas"]["SoldPrice"][];
2166
+ pagination: components["schemas"]["PageMeta"];
2167
+ /** @enum {boolean} */
2168
+ premiumRequired: true;
2169
+ };
2170
+ type LivePricingDetail = {
2171
+ /** @example 149.5 */
2172
+ retailPrice: number | undefined;
2173
+ /** @example 149.5 */
2174
+ estimatedValue: number | undefined;
2175
+ shopCount: number;
2176
+ pricingDataPoints: number;
2177
+ /**
2178
+ * Format: date-time
2179
+ * @example 2026-07-15T12:03:29.322Z
2180
+ */
2181
+ calculatedAt: string;
2182
+ };
2908
2183
  /** Response of `client.cards.livePricing()` / `client.products.livePricing()`. */
2909
- type LivePricingForItem = components['schemas']['LivePricingForItem'];
2184
+ type LivePricingForItem = {
2185
+ /**
2186
+ * @description Resource identifier
2187
+ * @example 6a577711abc1ce71383d3e10
2188
+ */
2189
+ id: string;
2190
+ name: string;
2191
+ technicalName: string;
2192
+ pricing: components["schemas"]["LivePricing"];
2193
+ };
2910
2194
  /** Response of `client.expansions.livePricing()`: live pricing for every item in one expansion. */
2911
- type ExpansionLivePricing = components['schemas']['ExpansionLivePricing'];
2195
+ type ExpansionLivePricing = {
2196
+ expansion: {
2197
+ technicalName: string;
2198
+ };
2199
+ items: components["schemas"]["LivePricingForItem"][];
2200
+ };
2912
2201
  /** The catalog item as embedded in stats responses: a `Card`/`SealedProduct` minus
2913
2202
  * `lowestShopOffer` and `referencePriceSnapshotsByProvider`, which these endpoints already answer
2914
2203
  * more precisely on their own. */
2915
- type StatsItemRef = components['schemas']['ItemStats']['item'];
2916
- type VariantStatsSummary = components['schemas']['ItemStats']['variantStats'];
2204
+ type StatsItemRef = {
2205
+ /**
2206
+ * @description Resource identifier
2207
+ * @example 6a577711abc1ce71383d3e10
2208
+ */
2209
+ id: string;
2210
+ name: string;
2211
+ shortName: string | undefined;
2212
+ technicalName: string;
2213
+ brand: components["schemas"]["Brand"];
2214
+ manufacturer: string;
2215
+ modelNumber: string | undefined;
2216
+ category: components["schemas"]["CategoryRef"] | undefined;
2217
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
2218
+ /**
2219
+ * @description Printing language of the item
2220
+ * @example JPN
2221
+ * @enum {string|null}
2222
+ */
2223
+ language: "ENG" | "JPN" | "CHI" | undefined;
2224
+ alternativeNames: components["schemas"]["AlternativeName"][];
2225
+ supportsMultipackPricing: boolean;
2226
+ /**
2227
+ * @description Absolute asset URL, or null when absent
2228
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2229
+ */
2230
+ imageUrl: string | undefined;
2231
+ /**
2232
+ * @description Cheapest current shop price, in SEK
2233
+ * @example 149.5
2234
+ */
2235
+ retailPrice: number | undefined;
2236
+ /**
2237
+ * @description Estimated market value, in SEK
2238
+ * @example 149.5
2239
+ */
2240
+ estimatedValue: number | undefined;
2241
+ /** @description Active shops currently tracking this item */
2242
+ shopCount: number;
2243
+ /** @description Observations the estimate rests on */
2244
+ pricingDataPoints: number;
2245
+ /**
2246
+ * Format: date-time
2247
+ * @example 2026-07-15T12:03:29.322Z
2248
+ */
2249
+ pricingUpdatedAt: string | undefined;
2250
+ /**
2251
+ * Format: date-time
2252
+ * @example 2026-07-15T12:03:29.322Z
2253
+ */
2254
+ createdAt: string;
2255
+ /**
2256
+ * Format: date-time
2257
+ * @example 2026-07-15T12:03:29.322Z
2258
+ */
2259
+ updatedAt: string;
2260
+ /** @enum {string} */
2261
+ kind: "card";
2262
+ /** @example 4/102 */
2263
+ cardNumber: string;
2264
+ /** @example Rare Holo */
2265
+ rarity: string | undefined;
2266
+ artist: string | undefined;
2267
+ cardmarketId: string | undefined;
2268
+ tcgplayerId: string | undefined;
2269
+ variants: components["schemas"]["CardVariants"] | undefined;
2270
+ prisjaktId: string | undefined;
2271
+ } | {
2272
+ /**
2273
+ * @description Resource identifier
2274
+ * @example 6a577711abc1ce71383d3e10
2275
+ */
2276
+ id: string;
2277
+ name: string;
2278
+ shortName: string | undefined;
2279
+ technicalName: string;
2280
+ brand: components["schemas"]["Brand"];
2281
+ manufacturer: string;
2282
+ modelNumber: string | undefined;
2283
+ category: components["schemas"]["CategoryRef"] | undefined;
2284
+ expansion: components["schemas"]["ExpansionRef"] | undefined;
2285
+ /**
2286
+ * @description Printing language of the item
2287
+ * @example JPN
2288
+ * @enum {string|null}
2289
+ */
2290
+ language: "ENG" | "JPN" | "CHI" | undefined;
2291
+ alternativeNames: components["schemas"]["AlternativeName"][];
2292
+ supportsMultipackPricing: boolean;
2293
+ /**
2294
+ * @description Absolute asset URL, or null when absent
2295
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2296
+ */
2297
+ imageUrl: string | undefined;
2298
+ /**
2299
+ * @description Cheapest current shop price, in SEK
2300
+ * @example 149.5
2301
+ */
2302
+ retailPrice: number | undefined;
2303
+ /**
2304
+ * @description Estimated market value, in SEK
2305
+ * @example 149.5
2306
+ */
2307
+ estimatedValue: number | undefined;
2308
+ /** @description Active shops currently tracking this item */
2309
+ shopCount: number;
2310
+ /** @description Observations the estimate rests on */
2311
+ pricingDataPoints: number;
2312
+ /**
2313
+ * Format: date-time
2314
+ * @example 2026-07-15T12:03:29.322Z
2315
+ */
2316
+ pricingUpdatedAt: string | undefined;
2317
+ /**
2318
+ * Format: date-time
2319
+ * @example 2026-07-15T12:03:29.322Z
2320
+ */
2321
+ createdAt: string;
2322
+ /**
2323
+ * Format: date-time
2324
+ * @example 2026-07-15T12:03:29.322Z
2325
+ */
2326
+ updatedAt: string;
2327
+ /** @enum {string} */
2328
+ kind: "sealed";
2329
+ upc: string | undefined;
2330
+ asin: string | undefined;
2331
+ epid: string | undefined;
2332
+ priceChartingId: string | undefined;
2333
+ prisjaktId: string | undefined;
2334
+ };
2335
+ type VariantStatsSummary = {
2336
+ /** @description Distinct cardType/condition/company/grade combinations */
2337
+ variantCount: number;
2338
+ looseCount: number;
2339
+ gradedCount: number;
2340
+ };
2917
2341
  /** Response of `client.priceStats.product()`. */
2918
- type ItemStats = components['schemas']['ItemStats'];
2342
+ type ItemStats = {
2343
+ item: components["schemas"]["CatalogItem"];
2344
+ dailyStats: components["schemas"]["DailyPricePoint"][];
2345
+ estimate: components["schemas"]["EstimatedValue"];
2346
+ variantStats: components["schemas"]["VariantStatsSummary"];
2347
+ };
2919
2348
  /** Response of `client.priceStats.productFull()`: everything `product()` has, plus the item's
2920
2349
  * current shop matches. */
2921
- type ItemFullStats = components['schemas']['ItemFullStats'];
2922
- type VariantPriceStat = components['schemas']['ItemVariantStats']['variants']['loose'][string];
2923
- /** Response of `client.priceStats.productByVariant()`. The generated shape keys `loose`/`graded`
2924
- * by a bare `string` (JSON Schema `additionalProperties` doesn't carry an enum), re-keyed here by
2925
- * `ItemCondition`/`GradingCompany` for real autocomplete. Only hand-written wrapper in this file.
2926
- * `graded` has a second string-keyed level for grade (`10`, `9.5` etc, straight from a JSON key). */
2350
+ type ItemFullStats = {
2351
+ item: components["schemas"]["CatalogItem"];
2352
+ stats: {
2353
+ dailyStats: components["schemas"]["DailyPricePoint"][];
2354
+ variantStats: components["schemas"]["VariantStatsSummary"];
2355
+ };
2356
+ estimate: components["schemas"]["EstimatedValue"];
2357
+ shopMatches: {
2358
+ data: components["schemas"]["ShopProductMatch"][];
2359
+ pagination: components["schemas"]["PageMeta"];
2360
+ };
2361
+ };
2362
+ type VariantPriceStat = {
2363
+ /** @example 149.5 */
2364
+ averagePrice: number;
2365
+ dataPointCount: number;
2366
+ /**
2367
+ * Format: date-time
2368
+ * @example 2026-07-15T12:03:29.322Z
2369
+ */
2370
+ lastSaleDate: string;
2371
+ };
2372
+ /** Response of `client.priceStats.productByVariant()`. The generated shape (`VariantBreakdown`)
2373
+ * keys `loose`/`graded` by a bare `string` (JSON Schema `additionalProperties` doesn't carry an
2374
+ * enum), re-keyed here by `ItemCondition`/`GradingCompany` for real autocomplete. Only hand-written
2375
+ * wrapper in this file. `graded` has a second string-keyed level for grade (`10`, `9.5` etc,
2376
+ * straight from a JSON key). */
2927
2377
  interface ItemVariantStats {
2928
- item: components['schemas']['ItemVariantStats']['item'];
2378
+ item: {
2379
+ /**
2380
+ * @description Resource identifier
2381
+ * @example 6a577711abc1ce71383d3e10
2382
+ */
2383
+ id: string;
2384
+ name: string;
2385
+ };
2929
2386
  variants: {
2930
2387
  loose: Partial<Record<ItemCondition, VariantPriceStat>>;
2931
2388
  graded: Partial<Record<GradingCompany, Record<string, VariantPriceStat>>>;
2932
2389
  };
2933
2390
  }
2934
- type VariantSelector = components['schemas']['ItemVariantDailyStats']['variant'];
2391
+ type VariantSelector = {
2392
+ /** @enum {string|null} */
2393
+ cardType: "loose" | "graded" | undefined;
2394
+ /** @enum {string|null} */
2395
+ condition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
2396
+ /** @enum {string|null} */
2397
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
2398
+ grade: number | undefined;
2399
+ };
2935
2400
  /** Response of `client.priceStats.productDailyByVariant()`. */
2936
- type ItemVariantDailyStats = components['schemas']['ItemVariantDailyStats'];
2937
- type ShopPricePoint = components['schemas']['ItemShopPriceHistory']['shops'][number]['history'][number];
2401
+ type ItemVariantDailyStats = {
2402
+ item: components["schemas"]["CatalogItemRef"];
2403
+ variant: components["schemas"]["VariantSelector"];
2404
+ dailyStats: components["schemas"]["DailyPricePoint"][];
2405
+ };
2406
+ type ShopPricePoint = {
2407
+ /**
2408
+ * Format: date-time
2409
+ * @example 2026-07-15T12:03:29.322Z
2410
+ */
2411
+ snapshotDate: string;
2412
+ /** @example 149.5 */
2413
+ price: number;
2414
+ /**
2415
+ * @description ISO-4217 currency code
2416
+ * @example SEK
2417
+ */
2418
+ currency: string;
2419
+ inStock: boolean;
2420
+ url: string;
2421
+ };
2938
2422
  /** Response of `client.shopMatchStats.forProduct()`: one product's price history, broken out per
2939
2423
  * shop. */
2940
- type ItemShopPriceHistory = components['schemas']['ItemShopPriceHistory'];
2424
+ type ItemShopPriceHistory = {
2425
+ item: components["schemas"]["CatalogItemRef"];
2426
+ shops: components["schemas"]["ShopPriceHistory"][];
2427
+ recordCount: number;
2428
+ };
2941
2429
  /** Response of `client.shopMatchStats.forShop()`: one shop's price history, broken out per
2942
2430
  * product. */
2943
- type ShopPriceHistoryList = components['schemas']['ShopPriceHistoryList'];
2944
- type ShopPriceComparisonRow = components['schemas']['ItemPriceComparison']['items'][number];
2945
- type ShopPriceComparisonStats = NonNullable<components['schemas']['ItemPriceComparison']['stats']>;
2431
+ type ShopPriceHistoryList = {
2432
+ shop: string;
2433
+ items: components["schemas"]["ShopItemPriceHistory"][];
2434
+ itemCount: number;
2435
+ };
2436
+ type ShopPriceComparisonRow = {
2437
+ shop: string;
2438
+ /** @example 149.5 */
2439
+ price: number;
2440
+ /**
2441
+ * @description ISO-4217 currency code
2442
+ * @example SEK
2443
+ */
2444
+ currency: string;
2445
+ inStock: boolean;
2446
+ url: string;
2447
+ /**
2448
+ * Format: date-time
2449
+ * @example 2026-07-15T12:03:29.322Z
2450
+ */
2451
+ snapshotDate: string;
2452
+ };
2453
+ type ShopPriceComparisonStats = {
2454
+ /** @example 149.5 */
2455
+ lowestPrice: number;
2456
+ /** @example 149.5 */
2457
+ highestPrice: number;
2458
+ /** @example 149.5 */
2459
+ averagePrice: number;
2460
+ inStockCount: number;
2461
+ };
2946
2462
  /** Response of `client.shopMatchStats.compare()`: one product's price at every shop that carries
2947
2463
  * it, as of one date. `stats` is `undefined` when no shop had a price on that date. */
2948
- type ItemPriceComparison = components['schemas']['ItemPriceComparison'];
2949
- type ShopUrlStatus = components['schemas']['ShopUrlMutationResult']['shopUrl']['status'];
2950
- type ShopUrlDiscoveredBy = components['schemas']['ShopUrlMutationResult']['shopUrl']['discoveredBy'];
2464
+ type ItemPriceComparison = {
2465
+ item: components["schemas"]["CatalogItemRef"];
2466
+ items: components["schemas"]["ShopPriceComparisonRow"][];
2467
+ stats: components["schemas"]["ShopPriceComparisonStats"] | undefined;
2468
+ };
2469
+ type ShopUrlStatus = "pending" | "active" | "invalid" | "rejected" | "sanityRejected";
2470
+ type ShopUrlDiscoveredBy = "scraper" | "user";
2951
2471
  /** A URL at a shop that tcgpriser scrapes, and what it has been matched to. */
2952
- type ShopUrl = components['schemas']['ShopUrlMutationResult']['shopUrl'];
2472
+ type ShopUrl = {
2473
+ /**
2474
+ * @description Resource identifier
2475
+ * @example 6a577711abc1ce71383d3e10
2476
+ */
2477
+ id: string;
2478
+ url: string;
2479
+ shop: string | undefined;
2480
+ status: components["schemas"]["ShopUrlStatus"];
2481
+ /** @enum {string} */
2482
+ discoveredBy: "scraper" | "user";
2483
+ /**
2484
+ * @description Resource identifier
2485
+ * @example 6a577711abc1ce71383d3e10
2486
+ */
2487
+ itemId: string | undefined;
2488
+ /** @enum {string|null} */
2489
+ itemKind: "card" | "sealed" | undefined;
2490
+ lockedItem: boolean;
2491
+ priceChartingId: string | undefined;
2492
+ scrapedName: string | undefined;
2493
+ matchScore: number | undefined;
2494
+ /**
2495
+ * Format: date-time
2496
+ * @example 2026-07-15T12:03:29.322Z
2497
+ */
2498
+ lastMatchedAt: string | undefined;
2499
+ /**
2500
+ * @description Resource identifier
2501
+ * @example 6a577711abc1ce71383d3e10
2502
+ */
2503
+ expansionId: string | undefined;
2504
+ /**
2505
+ * @description Resource identifier
2506
+ * @example 6a577711abc1ce71383d3e10
2507
+ */
2508
+ categoryId: string | undefined;
2509
+ submittedByUserId: string | undefined;
2510
+ /**
2511
+ * Format: date-time
2512
+ * @example 2026-07-15T12:03:29.322Z
2513
+ */
2514
+ createdAt: string;
2515
+ /**
2516
+ * Format: date-time
2517
+ * @example 2026-07-15T12:03:29.322Z
2518
+ */
2519
+ updatedAt: string;
2520
+ };
2953
2521
  /** Response of `client.shopUrls.submit()` / `client.shopUrls.assignProduct()`. */
2954
- type ShopUrlMutationResult = components['schemas']['ShopUrlMutationResult'];
2955
-
2522
+ type ShopUrlMutationResult = {
2523
+ message: string;
2524
+ shopUrl: components["schemas"]["ShopUrl"];
2525
+ };
2956
2526
  interface ListBargainsParams {
2957
2527
  type?: 'sealed' | 'card' | 'all';
2958
2528
  }
@@ -2985,7 +2555,6 @@ declare class BargainsResource {
2985
2555
  * threshold, card condition/grade, free-text search). Premium. */
2986
2556
  search(params?: SearchBargainsParams): Promise<ListResponse<Bargain>>;
2987
2557
  }
2988
-
2989
2558
  interface ListCardsParams extends PaginationParams {
2990
2559
  /** Free-text search over card and set names. */
2991
2560
  search?: string;
@@ -3027,7 +2596,6 @@ declare class CardsResource {
3027
2596
  * stats job. Premium. */
3028
2597
  livePricing(idOrTechnicalName: string, options?: PremiumOptions): Promise<LivePricingForItem>;
3029
2598
  }
3030
-
3031
2599
  declare class ExpansionsResource {
3032
2600
  private readonly http;
3033
2601
  constructor(http: HttpClient);
@@ -3040,7 +2608,6 @@ declare class ExpansionsResource {
3040
2608
  * this expansion, not read from the last stats job. Premium. */
3041
2609
  livePricing(technicalName: string, options?: PremiumOptions): Promise<ExpansionLivePricing>;
3042
2610
  }
3043
-
3044
2611
  declare class PackRatesResource {
3045
2612
  private readonly http;
3046
2613
  constructor(http: HttpClient);
@@ -3050,7 +2617,6 @@ declare class PackRatesResource {
3050
2617
  /** `GET /pack-rates/{expansionId}`: pull-rate odds for one expansion. */
3051
2618
  get(expansionId: string): Promise<PackRate>;
3052
2619
  }
3053
-
3054
2620
  /** Filters shared by `daily()` and `estimatedValues()`: all narrow which product(s) the stats
3055
2621
  * cover; combine as many as you like. */
3056
2622
  interface ProductFilterParams {
@@ -3135,7 +2701,6 @@ declare class PriceStatsResource {
3135
2701
  * are required for `cardType: 'graded'`. Premium. */
3136
2702
  productDailyByVariant(idOrTechnicalName: string, params: ProductDailyByVariantParams): Promise<ItemVariantDailyStats>;
3137
2703
  }
3138
-
3139
2704
  interface ListProductsParams extends PaginationParams {
3140
2705
  /** Whitespace-separated tokens, each matched against the start of a word. */
3141
2706
  search?: string;
@@ -3180,7 +2745,6 @@ declare class ProductsResource {
3180
2745
  * stats job. Premium. */
3181
2746
  livePricing(idOrTechnicalName: string, options?: PremiumOptions): Promise<LivePricingForItem>;
3182
2747
  }
3183
-
3184
2748
  interface ShopMatchStatsForProductParams {
3185
2749
  authToken?: string;
3186
2750
  /** `YYYY-MM-DD` */
@@ -3219,7 +2783,6 @@ declare class ShopMatchStatsResource {
3219
2783
  * one date (defaults to the latest). */
3220
2784
  compare(params: CompareShopPricesParams): Promise<ItemPriceComparison>;
3221
2785
  }
3222
-
3223
2786
  interface ListShopMatchesParams extends PaginationParams {
3224
2787
  /** Filter to one shop's technicalName. */
3225
2788
  shop?: string;
@@ -3244,7 +2807,6 @@ declare class ShopMatchesResource {
3244
2807
  /** `GET /shop-matches/shops`: match counts per shop (based on latest records only). */
3245
2808
  shopStats(params?: PaginationParams): Promise<ListResponse<ShopMatchStats>>;
3246
2809
  }
3247
-
3248
2810
  interface SubmitShopUrlParams extends PremiumOptions {
3249
2811
  url: string;
3250
2812
  /** Shop technicalName. Auto-created if it doesn't exist yet. */
@@ -3264,7 +2826,6 @@ declare class ShopUrlsResource {
3264
2826
  /** `PATCH /shop-urls/{id}/product`: manually assign (or clear) the product a shop URL resolves to. */
3265
2827
  assignProduct(shopUrlId: string, params: AssignShopUrlProductParams): Promise<ShopUrlMutationResult>;
3266
2828
  }
3267
-
3268
2829
  interface ListShopsParams {
3269
2830
  active?: boolean;
3270
2831
  }
@@ -3276,14 +2837,12 @@ declare class ShopsResource {
3276
2837
  /** `GET /shops/{id}`: fetch one shop by its id or technicalName. */
3277
2838
  get(idOrTechnicalName: string): Promise<Shop>;
3278
2839
  }
3279
-
3280
2840
  declare class StatsResource {
3281
2841
  private readonly http;
3282
2842
  constructor(http: HttpClient);
3283
2843
  /** `GET /stats`: platform-wide overview counts (shops, expansions, products, prices tracked). */
3284
2844
  platform(): Promise<PlatformStats>;
3285
2845
  }
3286
-
3287
2846
  declare const DEFAULT_BASE_URL = "https://api.tcgpriser.se";
3288
2847
  /** Local dev, self-hosting and testing overrides. Most integrations never touch these. */
3289
2848
  interface TcgPriserAdvancedOptions {
@@ -3346,12 +2905,11 @@ declare class TcgPriser {
3346
2905
  */
3347
2906
  constructor(optionsOrAuthToken?: string | TcgPriserOptions);
3348
2907
  }
3349
-
3350
2908
  /** The stable error codes the API's `error.code` field can hold. */
3351
2909
  type TcgPriserErrorCode = 'validationFailed' | 'unauthorized' | 'forbidden' | 'notFound' | 'conflict' | 'readOnlyField' | 'rateLimited' | 'premiumRequired' | 'internalError'
3352
- /** Response body wasn't the `{ error: { code, message } }` shape. Probably a proxy or gateway
3353
- * error in front of the API. */
3354
- | 'unknown';
2910
+ /** Response body wasn't the `{ error: { code, message } }` shape. Probably a proxy or gateway
2911
+ * error in front of the API. */
2912
+ | 'unknown';
3355
2913
  /** Thrown for any non-2xx response. Carries the parsed `{ code, message }` when the body matched
3356
2914
  * the API's error envelope, plus the raw status/body regardless so nothing gets lost. */
3357
2915
  declare class TcgPriserError extends Error {
@@ -3372,5 +2930,4 @@ declare class TcgPriserError extends Error {
3372
2930
  body: string;
3373
2931
  });
3374
2932
  }
3375
-
3376
- export { type AlternativeName, type AssignShopUrlProductParams, type Bargain, type BargainInfo, type BargainProductRef, type BargainReferenceSource, type BrandRef, type Card, type CardMatchesParams, type CardPricesParams, type CardReferencePricesParams, type CardType, type CardVariants, type CatalogItem, type CategoryRef, type CompareShopPricesParams, type CurrencyCode, DEFAULT_BASE_URL, type DailyPricePoint, type DailyPriceStatsParams, type EstimatedValue, type EstimatedValuesParams, type Expansion, type ExpansionContents, type ExpansionLivePricing, type ExpansionRef, type GradingCompany, type ItemCondition, type ItemDailyStats, type ItemEstimatedValue, type ItemFullStats, type ItemPriceComparison, type ItemRef, type ItemReferencePrices, type ItemShopMatch, type ItemShopMatches, type ItemShopPriceHistory, type ItemSoldPrices, type ItemStats, type ItemVariantDailyStats, type ItemVariantStats, type ListBargainsParams, type ListCardsParams, type ListProductsParams, type ListResponse, type ListShopMatchesParams, type ListShopsParams, type LivePricingDetail, type LivePricingForItem, type LowestShopOffer, type MatchedItemRef, type PackRate, type PackRateBucket, type PageMeta, type PaginationParams, type PlatformStats, type PremiumOptions, type PrintingLanguage, type ProductByVariantParams, type ProductDailyByVariantParams, type ProductDailyStatsParams, type ProductFilterParams, type ProductMatchesParams, type ProductPricesParams, type ProductReferencePricesParams, type ReferencePriceCardVariant, type ReferencePriceCurrencyMode, type ReferencePriceMetric, type ReferencePriceProvider, type ReferencePriceSeries, type ReferencePriceSeriesPoint, type ReferencePriceSnapshot, type ReferencePriceSnapshotsByProvider, type ReferencePriceSource, type ResourceId, type SealedProduct, type SearchBargainsParams, type Shop, type ShopMatch, type ShopMatchDelivery, type ShopMatchStats, type ShopMatchStatsForProductParams, type ShopMatchStatsForShopParams, type ShopMatchesForShop, type ShopMatchesForShopParams, type ShopPriceComparisonRow, type ShopPriceComparisonStats, type ShopPriceHistoryList, type ShopPricePoint, type ShopRef, type ShopSummary, type ShopUrl, type ShopUrlDiscoveredBy, type ShopUrlMutationResult, type ShopUrlStatus, type SoldPrice, type StatsItemRef, type SubmitShopUrlParams, TcgPriser, TcgPriserError, type TcgPriserErrorCode, type TcgPriserOptions, type Timestamp, type TopItem, type TopProductsParams, type VariantPriceStat, type VariantSelector, type VariantStatsSummary, type components };
2933
+ export { type AlternativeName, type AssignShopUrlProductParams, type Bargain, type BargainInfo, type BargainProductRef, type BargainReferenceSource, type BrandRef, type Card, type CardMatchesParams, type CardPricesParams, type CardReferencePricesParams, type CardType, type CardVariants, type CatalogItem, type CategoryRef, type CompareShopPricesParams, type CurrencyCode, DEFAULT_BASE_URL, type DailyPricePoint, type DailyPriceStatsParams, type EstimatedValue, type EstimatedValuesParams, type Expansion, type ExpansionCard, type ExpansionContents, type ExpansionLivePricing, type ExpansionRef, type ExpansionSealedProduct, type GradingCompany, type ItemCondition, type ItemDailyStats, type ItemEstimatedValue, type ItemFullStats, type ItemPriceComparison, type ItemRef, type ItemReferencePrices, type ItemShopMatch, type ItemShopMatches, type ItemShopPriceHistory, type ItemSoldPrices, type ItemStats, type ItemVariantDailyStats, type ItemVariantStats, type ListBargainsParams, type ListCardsParams, type ListProductsParams, type ListResponse, type ListShopMatchesParams, type ListShopsParams, type LivePricingDetail, type LivePricingForItem, type LowestShopOffer, type MatchedItemRef, type PackRate, type PackRateBucket, type PageMeta, type PaginationParams, type PlatformStats, type PremiumOptions, type PrintingLanguage, type ProductByVariantParams, type ProductDailyByVariantParams, type ProductDailyStatsParams, type ProductFilterParams, type ProductMatchesParams, type ProductPricesParams, type ProductReferencePricesParams, type ReferencePriceCardVariant, type ReferencePriceCurrencyMode, type ReferencePriceMetric, type ReferencePriceProvider, type ReferencePriceSeries, type ReferencePriceSeriesPoint, type ReferencePriceSnapshot, type ReferencePriceSnapshotsByProvider, type ReferencePriceSource, type ResourceId, type SealedProduct, type SearchBargainsParams, type Shop, type ShopMatch, type ShopMatchDelivery, type ShopMatchStats, type ShopMatchStatsForProductParams, type ShopMatchStatsForShopParams, type ShopMatchesForShop, type ShopMatchesForShopParams, type ShopPriceComparisonRow, type ShopPriceComparisonStats, type ShopPriceHistoryList, type ShopPricePoint, type ShopRef, type ShopSummary, type ShopUrl, type ShopUrlDiscoveredBy, type ShopUrlMutationResult, type ShopUrlStatus, type SoldPrice, type StatsItemRef, type SubmitShopUrlParams, TcgPriser, TcgPriserError, type TcgPriserErrorCode, type TcgPriserOptions, type Timestamp, type TopItem, type TopProductsParams, type VariantPriceStat, type VariantSelector, type VariantStatsSummary, type components };