@sonic-commerce/storefront-types 0.11.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.
@@ -0,0 +1,3876 @@
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+
6
+ export interface paths {
7
+ "/products": {
8
+ parameters: {
9
+ query?: never;
10
+ header?: never;
11
+ path?: never;
12
+ cookie?: never;
13
+ };
14
+ /**
15
+ * List products
16
+ * @description Filter, sort, search and expand. `price` sorts and filters resolve against the store's default currency, in minor units.
17
+ */
18
+ get: {
19
+ parameters: {
20
+ query?: {
21
+ /** @description 1-based page number. */
22
+ page?: number;
23
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
24
+ limit?: number;
25
+ /** @description Free-text search term. */
26
+ q?: string;
27
+ /** @description ISO 4217 code to price against, e.g. `CAD`. Must be one the store supports. Defaults to the store's default currency. */
28
+ currency?: string;
29
+ /** @description Comma-separated sort fields, `-` prefix for descending (e.g. `-created_at,title`). Allowed: title, created_at, updated_at, price. */
30
+ sort?: string;
31
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
32
+ expand?: string;
33
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
34
+ fields?: string;
35
+ /** @description Filter by category_id. A comma-separated list matches any value; the literal `null` matches rows where category_id is unset. */
36
+ category_id?: string;
37
+ /** @description Filter where category_id is not equal to the given value. */
38
+ "category_id[ne]"?: string;
39
+ /** @description Filter by collection_id. A comma-separated list matches any value; the literal `null` matches rows where collection_id is unset. */
40
+ collection_id?: string;
41
+ /** @description Filter where collection_id is not equal to the given value. */
42
+ "collection_id[ne]"?: string;
43
+ /** @description Filter by handle. A comma-separated list matches any value; the literal `null` matches rows where handle is unset. */
44
+ handle?: string;
45
+ /** @description Filter where handle is not equal to the given value. */
46
+ "handle[ne]"?: string;
47
+ /** @description Filter where handle is case-insensitive substring match the given value. */
48
+ "handle[like]"?: string;
49
+ /** @description Filter by tag. A comma-separated list matches any value; the literal `null` matches rows where tag is unset. */
50
+ tag?: string;
51
+ /** @description Filter where tag is not equal to the given value. */
52
+ "tag[ne]"?: string;
53
+ /** @description Filter by type. A comma-separated list matches any value; the literal `null` matches rows where type is unset. */
54
+ type?: string;
55
+ /** @description Filter where type is not equal to the given value. */
56
+ "type[ne]"?: string;
57
+ /** @description Filter by price. A comma-separated list matches any value; the literal `null` matches rows where price is unset. */
58
+ price?: string;
59
+ /** @description Filter where price is not equal to the given value. */
60
+ "price[ne]"?: number;
61
+ /** @description Filter where price is greater than the given value. */
62
+ "price[gt]"?: number;
63
+ /** @description Filter where price is greater than or equal to the given value. */
64
+ "price[gte]"?: number;
65
+ /** @description Filter where price is less than the given value. */
66
+ "price[lt]"?: number;
67
+ /** @description Filter where price is less than or equal to the given value. */
68
+ "price[lte]"?: number;
69
+ /** @description Filter by in_stock. A comma-separated list matches any value; the literal `null` matches rows where in_stock is unset. */
70
+ in_stock?: string;
71
+ };
72
+ header?: never;
73
+ path?: never;
74
+ cookie?: never;
75
+ };
76
+ requestBody?: never;
77
+ responses: {
78
+ /** @description Success */
79
+ 200: {
80
+ headers: {
81
+ [name: string]: unknown;
82
+ };
83
+ content: {
84
+ "application/json": {
85
+ data: components["schemas"]["ProductListItem"][];
86
+ meta: components["schemas"]["PaginationMeta"];
87
+ };
88
+ };
89
+ };
90
+ /** @description Invalid request — unknown parameter or bad value. */
91
+ 400: {
92
+ headers: {
93
+ [name: string]: unknown;
94
+ };
95
+ content: {
96
+ "application/json": components["schemas"]["Error"];
97
+ };
98
+ };
99
+ /** @description Rate limit exceeded. */
100
+ 429: {
101
+ headers: {
102
+ [name: string]: unknown;
103
+ };
104
+ content: {
105
+ "application/json": components["schemas"]["Error"];
106
+ };
107
+ };
108
+ };
109
+ };
110
+ put?: never;
111
+ post?: never;
112
+ delete?: never;
113
+ options?: never;
114
+ head?: never;
115
+ patch?: never;
116
+ trace?: never;
117
+ };
118
+ "/products/search": {
119
+ parameters: {
120
+ query?: never;
121
+ header?: never;
122
+ path?: never;
123
+ cookie?: never;
124
+ };
125
+ /**
126
+ * Search products (deprecated)
127
+ * @deprecated
128
+ * @description Alias of `GET /products`. Use `/products?q=`. Removed at 1.0.
129
+ */
130
+ get: {
131
+ parameters: {
132
+ query?: {
133
+ /** @description 1-based page number. */
134
+ page?: number;
135
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
136
+ limit?: number;
137
+ /** @description Free-text search term. */
138
+ q?: string;
139
+ /** @description ISO 4217 code to price against, e.g. `CAD`. Must be one the store supports. Defaults to the store's default currency. */
140
+ currency?: string;
141
+ /** @description Comma-separated sort fields, `-` prefix for descending (e.g. `-created_at,title`). Allowed: title, created_at, updated_at, price. */
142
+ sort?: string;
143
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
144
+ expand?: string;
145
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
146
+ fields?: string;
147
+ /** @description Filter by category_id. A comma-separated list matches any value; the literal `null` matches rows where category_id is unset. */
148
+ category_id?: string;
149
+ /** @description Filter where category_id is not equal to the given value. */
150
+ "category_id[ne]"?: string;
151
+ /** @description Filter by collection_id. A comma-separated list matches any value; the literal `null` matches rows where collection_id is unset. */
152
+ collection_id?: string;
153
+ /** @description Filter where collection_id is not equal to the given value. */
154
+ "collection_id[ne]"?: string;
155
+ /** @description Filter by handle. A comma-separated list matches any value; the literal `null` matches rows where handle is unset. */
156
+ handle?: string;
157
+ /** @description Filter where handle is not equal to the given value. */
158
+ "handle[ne]"?: string;
159
+ /** @description Filter where handle is case-insensitive substring match the given value. */
160
+ "handle[like]"?: string;
161
+ /** @description Filter by tag. A comma-separated list matches any value; the literal `null` matches rows where tag is unset. */
162
+ tag?: string;
163
+ /** @description Filter where tag is not equal to the given value. */
164
+ "tag[ne]"?: string;
165
+ /** @description Filter by type. A comma-separated list matches any value; the literal `null` matches rows where type is unset. */
166
+ type?: string;
167
+ /** @description Filter where type is not equal to the given value. */
168
+ "type[ne]"?: string;
169
+ /** @description Filter by price. A comma-separated list matches any value; the literal `null` matches rows where price is unset. */
170
+ price?: string;
171
+ /** @description Filter where price is not equal to the given value. */
172
+ "price[ne]"?: number;
173
+ /** @description Filter where price is greater than the given value. */
174
+ "price[gt]"?: number;
175
+ /** @description Filter where price is greater than or equal to the given value. */
176
+ "price[gte]"?: number;
177
+ /** @description Filter where price is less than the given value. */
178
+ "price[lt]"?: number;
179
+ /** @description Filter where price is less than or equal to the given value. */
180
+ "price[lte]"?: number;
181
+ /** @description Filter by in_stock. A comma-separated list matches any value; the literal `null` matches rows where in_stock is unset. */
182
+ in_stock?: string;
183
+ };
184
+ header?: never;
185
+ path?: never;
186
+ cookie?: never;
187
+ };
188
+ requestBody?: never;
189
+ responses: {
190
+ /** @description Success */
191
+ 200: {
192
+ headers: {
193
+ [name: string]: unknown;
194
+ };
195
+ content: {
196
+ "application/json": {
197
+ data: components["schemas"]["ProductListItem"][];
198
+ meta: components["schemas"]["PaginationMeta"];
199
+ };
200
+ };
201
+ };
202
+ /** @description Invalid request — unknown parameter or bad value. */
203
+ 400: {
204
+ headers: {
205
+ [name: string]: unknown;
206
+ };
207
+ content: {
208
+ "application/json": components["schemas"]["Error"];
209
+ };
210
+ };
211
+ /** @description Rate limit exceeded. */
212
+ 429: {
213
+ headers: {
214
+ [name: string]: unknown;
215
+ };
216
+ content: {
217
+ "application/json": components["schemas"]["Error"];
218
+ };
219
+ };
220
+ };
221
+ };
222
+ put?: never;
223
+ post?: never;
224
+ delete?: never;
225
+ options?: never;
226
+ head?: never;
227
+ patch?: never;
228
+ trace?: never;
229
+ };
230
+ "/products/{handle}": {
231
+ parameters: {
232
+ query?: never;
233
+ header?: never;
234
+ path?: never;
235
+ cookie?: never;
236
+ };
237
+ /**
238
+ * Get a product by handle
239
+ * @description Expands `variants` and `options` unless `expand` narrows the response.
240
+ */
241
+ get: {
242
+ parameters: {
243
+ query?: {
244
+ /** @description 1-based page number. */
245
+ page?: number;
246
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
247
+ limit?: number;
248
+ /** @description ISO 4217 code to price against, e.g. `CAD`. Must be one the store supports. Defaults to the store's default currency. */
249
+ currency?: string;
250
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
251
+ expand?: string;
252
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
253
+ fields?: string;
254
+ };
255
+ header?: never;
256
+ path: {
257
+ /** @description Product handle (URL slug). */
258
+ handle: string;
259
+ };
260
+ cookie?: never;
261
+ };
262
+ requestBody?: never;
263
+ responses: {
264
+ /** @description Success */
265
+ 200: {
266
+ headers: {
267
+ [name: string]: unknown;
268
+ };
269
+ content: {
270
+ "application/json": {
271
+ data: components["schemas"]["Product"];
272
+ };
273
+ };
274
+ };
275
+ /** @description Invalid request — unknown parameter or bad value. */
276
+ 400: {
277
+ headers: {
278
+ [name: string]: unknown;
279
+ };
280
+ content: {
281
+ "application/json": components["schemas"]["Error"];
282
+ };
283
+ };
284
+ /** @description Rate limit exceeded. */
285
+ 429: {
286
+ headers: {
287
+ [name: string]: unknown;
288
+ };
289
+ content: {
290
+ "application/json": components["schemas"]["Error"];
291
+ };
292
+ };
293
+ };
294
+ };
295
+ put?: never;
296
+ post?: never;
297
+ delete?: never;
298
+ options?: never;
299
+ head?: never;
300
+ patch?: never;
301
+ trace?: never;
302
+ };
303
+ "/products/id/{id}": {
304
+ parameters: {
305
+ query?: never;
306
+ header?: never;
307
+ path?: never;
308
+ cookie?: never;
309
+ };
310
+ /**
311
+ * Get a product by id
312
+ * @description For clients holding an id from a cart or an order.
313
+ */
314
+ get: {
315
+ parameters: {
316
+ query?: {
317
+ /** @description 1-based page number. */
318
+ page?: number;
319
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
320
+ limit?: number;
321
+ /** @description ISO 4217 code to price against, e.g. `CAD`. Must be one the store supports. Defaults to the store's default currency. */
322
+ currency?: string;
323
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
324
+ expand?: string;
325
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
326
+ fields?: string;
327
+ };
328
+ header?: never;
329
+ path: {
330
+ /** @description Product id. */
331
+ id: string;
332
+ };
333
+ cookie?: never;
334
+ };
335
+ requestBody?: never;
336
+ responses: {
337
+ /** @description Success */
338
+ 200: {
339
+ headers: {
340
+ [name: string]: unknown;
341
+ };
342
+ content: {
343
+ "application/json": {
344
+ data: components["schemas"]["Product"];
345
+ };
346
+ };
347
+ };
348
+ /** @description Invalid request — unknown parameter or bad value. */
349
+ 400: {
350
+ headers: {
351
+ [name: string]: unknown;
352
+ };
353
+ content: {
354
+ "application/json": components["schemas"]["Error"];
355
+ };
356
+ };
357
+ /** @description Rate limit exceeded. */
358
+ 429: {
359
+ headers: {
360
+ [name: string]: unknown;
361
+ };
362
+ content: {
363
+ "application/json": components["schemas"]["Error"];
364
+ };
365
+ };
366
+ };
367
+ };
368
+ put?: never;
369
+ post?: never;
370
+ delete?: never;
371
+ options?: never;
372
+ head?: never;
373
+ patch?: never;
374
+ trace?: never;
375
+ };
376
+ "/products/{handle}/variants": {
377
+ parameters: {
378
+ query?: never;
379
+ header?: never;
380
+ path?: never;
381
+ cookie?: never;
382
+ };
383
+ /** List a product's variants */
384
+ get: {
385
+ parameters: {
386
+ query?: never;
387
+ header?: never;
388
+ path: {
389
+ /** @description Product handle (URL slug). */
390
+ handle: string;
391
+ };
392
+ cookie?: never;
393
+ };
394
+ requestBody?: never;
395
+ responses: {
396
+ /** @description Success */
397
+ 200: {
398
+ headers: {
399
+ [name: string]: unknown;
400
+ };
401
+ content: {
402
+ "application/json": {
403
+ data: components["schemas"]["ProductVariant"][];
404
+ meta: components["schemas"]["PaginationMeta"];
405
+ };
406
+ };
407
+ };
408
+ /** @description Invalid request — unknown parameter or bad value. */
409
+ 400: {
410
+ headers: {
411
+ [name: string]: unknown;
412
+ };
413
+ content: {
414
+ "application/json": components["schemas"]["Error"];
415
+ };
416
+ };
417
+ /** @description Rate limit exceeded. */
418
+ 429: {
419
+ headers: {
420
+ [name: string]: unknown;
421
+ };
422
+ content: {
423
+ "application/json": components["schemas"]["Error"];
424
+ };
425
+ };
426
+ };
427
+ };
428
+ put?: never;
429
+ post?: never;
430
+ delete?: never;
431
+ options?: never;
432
+ head?: never;
433
+ patch?: never;
434
+ trace?: never;
435
+ };
436
+ "/products/{handle}/related": {
437
+ parameters: {
438
+ query?: never;
439
+ header?: never;
440
+ path?: never;
441
+ cookie?: never;
442
+ };
443
+ /**
444
+ * List related products
445
+ * @description Products sharing a category with this one, newest first, capped at 12.
446
+ */
447
+ get: {
448
+ parameters: {
449
+ query?: never;
450
+ header?: never;
451
+ path: {
452
+ /** @description Product handle (URL slug). */
453
+ handle: string;
454
+ };
455
+ cookie?: never;
456
+ };
457
+ requestBody?: never;
458
+ responses: {
459
+ /** @description Success */
460
+ 200: {
461
+ headers: {
462
+ [name: string]: unknown;
463
+ };
464
+ content: {
465
+ "application/json": {
466
+ data: components["schemas"]["ProductListItem"][];
467
+ meta: components["schemas"]["PaginationMeta"];
468
+ };
469
+ };
470
+ };
471
+ /** @description Invalid request — unknown parameter or bad value. */
472
+ 400: {
473
+ headers: {
474
+ [name: string]: unknown;
475
+ };
476
+ content: {
477
+ "application/json": components["schemas"]["Error"];
478
+ };
479
+ };
480
+ /** @description Rate limit exceeded. */
481
+ 429: {
482
+ headers: {
483
+ [name: string]: unknown;
484
+ };
485
+ content: {
486
+ "application/json": components["schemas"]["Error"];
487
+ };
488
+ };
489
+ };
490
+ };
491
+ put?: never;
492
+ post?: never;
493
+ delete?: never;
494
+ options?: never;
495
+ head?: never;
496
+ patch?: never;
497
+ trace?: never;
498
+ };
499
+ "/categories": {
500
+ parameters: {
501
+ query?: never;
502
+ header?: never;
503
+ path?: never;
504
+ cookie?: never;
505
+ };
506
+ /**
507
+ * List categories
508
+ * @description Active, non-internal categories only. `parent_id=null` returns roots.
509
+ */
510
+ get: {
511
+ parameters: {
512
+ query?: {
513
+ /** @description 1-based page number. */
514
+ page?: number;
515
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
516
+ limit?: number;
517
+ /** @description Free-text search term. */
518
+ q?: string;
519
+ /** @description Comma-separated sort fields, `-` prefix for descending (e.g. `-created_at,title`). Allowed: name, rank, handle. */
520
+ sort?: string;
521
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
522
+ expand?: string;
523
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
524
+ fields?: string;
525
+ /** @description Filter by parent_id. A comma-separated list matches any value; the literal `null` matches rows where parent_id is unset. */
526
+ parent_id?: string;
527
+ /** @description Filter where parent_id is not equal to the given value. */
528
+ "parent_id[ne]"?: string;
529
+ /** @description Filter by handle. A comma-separated list matches any value; the literal `null` matches rows where handle is unset. */
530
+ handle?: string;
531
+ /** @description Filter where handle is not equal to the given value. */
532
+ "handle[ne]"?: string;
533
+ /** @description Filter where handle is case-insensitive substring match the given value. */
534
+ "handle[like]"?: string;
535
+ };
536
+ header?: never;
537
+ path?: never;
538
+ cookie?: never;
539
+ };
540
+ requestBody?: never;
541
+ responses: {
542
+ /** @description Success */
543
+ 200: {
544
+ headers: {
545
+ [name: string]: unknown;
546
+ };
547
+ content: {
548
+ "application/json": {
549
+ data: components["schemas"]["Category"][];
550
+ meta: components["schemas"]["PaginationMeta"];
551
+ };
552
+ };
553
+ };
554
+ /** @description Invalid request — unknown parameter or bad value. */
555
+ 400: {
556
+ headers: {
557
+ [name: string]: unknown;
558
+ };
559
+ content: {
560
+ "application/json": components["schemas"]["Error"];
561
+ };
562
+ };
563
+ /** @description Rate limit exceeded. */
564
+ 429: {
565
+ headers: {
566
+ [name: string]: unknown;
567
+ };
568
+ content: {
569
+ "application/json": components["schemas"]["Error"];
570
+ };
571
+ };
572
+ };
573
+ };
574
+ put?: never;
575
+ post?: never;
576
+ delete?: never;
577
+ options?: never;
578
+ head?: never;
579
+ patch?: never;
580
+ trace?: never;
581
+ };
582
+ "/categories/search": {
583
+ parameters: {
584
+ query?: never;
585
+ header?: never;
586
+ path?: never;
587
+ cookie?: never;
588
+ };
589
+ /**
590
+ * Search categories (deprecated)
591
+ * @deprecated
592
+ * @description Alias of `GET /categories`. Use `/categories?q=`. Removed at 1.0.
593
+ */
594
+ get: {
595
+ parameters: {
596
+ query?: {
597
+ /** @description 1-based page number. */
598
+ page?: number;
599
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
600
+ limit?: number;
601
+ /** @description Free-text search term. */
602
+ q?: string;
603
+ /** @description Comma-separated sort fields, `-` prefix for descending (e.g. `-created_at,title`). Allowed: name, rank, handle. */
604
+ sort?: string;
605
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
606
+ expand?: string;
607
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
608
+ fields?: string;
609
+ /** @description Filter by parent_id. A comma-separated list matches any value; the literal `null` matches rows where parent_id is unset. */
610
+ parent_id?: string;
611
+ /** @description Filter where parent_id is not equal to the given value. */
612
+ "parent_id[ne]"?: string;
613
+ /** @description Filter by handle. A comma-separated list matches any value; the literal `null` matches rows where handle is unset. */
614
+ handle?: string;
615
+ /** @description Filter where handle is not equal to the given value. */
616
+ "handle[ne]"?: string;
617
+ /** @description Filter where handle is case-insensitive substring match the given value. */
618
+ "handle[like]"?: string;
619
+ };
620
+ header?: never;
621
+ path?: never;
622
+ cookie?: never;
623
+ };
624
+ requestBody?: never;
625
+ responses: {
626
+ /** @description Success */
627
+ 200: {
628
+ headers: {
629
+ [name: string]: unknown;
630
+ };
631
+ content: {
632
+ "application/json": {
633
+ data: components["schemas"]["Category"][];
634
+ meta: components["schemas"]["PaginationMeta"];
635
+ };
636
+ };
637
+ };
638
+ /** @description Invalid request — unknown parameter or bad value. */
639
+ 400: {
640
+ headers: {
641
+ [name: string]: unknown;
642
+ };
643
+ content: {
644
+ "application/json": components["schemas"]["Error"];
645
+ };
646
+ };
647
+ /** @description Rate limit exceeded. */
648
+ 429: {
649
+ headers: {
650
+ [name: string]: unknown;
651
+ };
652
+ content: {
653
+ "application/json": components["schemas"]["Error"];
654
+ };
655
+ };
656
+ };
657
+ };
658
+ put?: never;
659
+ post?: never;
660
+ delete?: never;
661
+ options?: never;
662
+ head?: never;
663
+ patch?: never;
664
+ trace?: never;
665
+ };
666
+ "/categories/tree": {
667
+ parameters: {
668
+ query?: never;
669
+ header?: never;
670
+ path?: never;
671
+ cookie?: never;
672
+ };
673
+ /**
674
+ * Get the category tree
675
+ * @description The full nested menu in one request. Unpaginated; nesting is capped at 8 levels.
676
+ */
677
+ get: {
678
+ parameters: {
679
+ query?: never;
680
+ header?: never;
681
+ path?: never;
682
+ cookie?: never;
683
+ };
684
+ requestBody?: never;
685
+ responses: {
686
+ /** @description Success */
687
+ 200: {
688
+ headers: {
689
+ [name: string]: unknown;
690
+ };
691
+ content: {
692
+ "application/json": {
693
+ data: components["schemas"]["CategoryTreeNode"][];
694
+ };
695
+ };
696
+ };
697
+ /** @description Invalid request — unknown parameter or bad value. */
698
+ 400: {
699
+ headers: {
700
+ [name: string]: unknown;
701
+ };
702
+ content: {
703
+ "application/json": components["schemas"]["Error"];
704
+ };
705
+ };
706
+ /** @description Rate limit exceeded. */
707
+ 429: {
708
+ headers: {
709
+ [name: string]: unknown;
710
+ };
711
+ content: {
712
+ "application/json": components["schemas"]["Error"];
713
+ };
714
+ };
715
+ };
716
+ };
717
+ put?: never;
718
+ post?: never;
719
+ delete?: never;
720
+ options?: never;
721
+ head?: never;
722
+ patch?: never;
723
+ trace?: never;
724
+ };
725
+ "/categories/{idOrHandle}": {
726
+ parameters: {
727
+ query?: never;
728
+ header?: never;
729
+ path?: never;
730
+ cookie?: never;
731
+ };
732
+ /**
733
+ * Get a category
734
+ * @description Accepts either the category id or its handle.
735
+ */
736
+ get: {
737
+ parameters: {
738
+ query?: {
739
+ /** @description 1-based page number. */
740
+ page?: number;
741
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
742
+ limit?: number;
743
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
744
+ expand?: string;
745
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
746
+ fields?: string;
747
+ };
748
+ header?: never;
749
+ path: {
750
+ /** @description Category id or handle (URL slug). */
751
+ idOrHandle: string;
752
+ };
753
+ cookie?: never;
754
+ };
755
+ requestBody?: never;
756
+ responses: {
757
+ /** @description Success */
758
+ 200: {
759
+ headers: {
760
+ [name: string]: unknown;
761
+ };
762
+ content: {
763
+ "application/json": {
764
+ data: components["schemas"]["Category"];
765
+ };
766
+ };
767
+ };
768
+ /** @description Invalid request — unknown parameter or bad value. */
769
+ 400: {
770
+ headers: {
771
+ [name: string]: unknown;
772
+ };
773
+ content: {
774
+ "application/json": components["schemas"]["Error"];
775
+ };
776
+ };
777
+ /** @description Rate limit exceeded. */
778
+ 429: {
779
+ headers: {
780
+ [name: string]: unknown;
781
+ };
782
+ content: {
783
+ "application/json": components["schemas"]["Error"];
784
+ };
785
+ };
786
+ };
787
+ };
788
+ put?: never;
789
+ post?: never;
790
+ delete?: never;
791
+ options?: never;
792
+ head?: never;
793
+ patch?: never;
794
+ trace?: never;
795
+ };
796
+ "/categories/{idOrHandle}/products": {
797
+ parameters: {
798
+ query?: never;
799
+ header?: never;
800
+ path?: never;
801
+ cookie?: never;
802
+ };
803
+ /**
804
+ * List a category's products
805
+ * @description The full product query grammar, scoped to this category. `category_id` may be sent as well to narrow further.
806
+ */
807
+ get: {
808
+ parameters: {
809
+ query?: {
810
+ /** @description 1-based page number. */
811
+ page?: number;
812
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
813
+ limit?: number;
814
+ /** @description Free-text search term. */
815
+ q?: string;
816
+ /** @description ISO 4217 code to price against, e.g. `CAD`. Must be one the store supports. Defaults to the store's default currency. */
817
+ currency?: string;
818
+ /** @description Comma-separated sort fields, `-` prefix for descending (e.g. `-created_at,title`). Allowed: title, created_at, updated_at, price. */
819
+ sort?: string;
820
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
821
+ expand?: string;
822
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
823
+ fields?: string;
824
+ /** @description Filter by category_id. A comma-separated list matches any value; the literal `null` matches rows where category_id is unset. */
825
+ category_id?: string;
826
+ /** @description Filter where category_id is not equal to the given value. */
827
+ "category_id[ne]"?: string;
828
+ /** @description Filter by collection_id. A comma-separated list matches any value; the literal `null` matches rows where collection_id is unset. */
829
+ collection_id?: string;
830
+ /** @description Filter where collection_id is not equal to the given value. */
831
+ "collection_id[ne]"?: string;
832
+ /** @description Filter by handle. A comma-separated list matches any value; the literal `null` matches rows where handle is unset. */
833
+ handle?: string;
834
+ /** @description Filter where handle is not equal to the given value. */
835
+ "handle[ne]"?: string;
836
+ /** @description Filter where handle is case-insensitive substring match the given value. */
837
+ "handle[like]"?: string;
838
+ /** @description Filter by tag. A comma-separated list matches any value; the literal `null` matches rows where tag is unset. */
839
+ tag?: string;
840
+ /** @description Filter where tag is not equal to the given value. */
841
+ "tag[ne]"?: string;
842
+ /** @description Filter by type. A comma-separated list matches any value; the literal `null` matches rows where type is unset. */
843
+ type?: string;
844
+ /** @description Filter where type is not equal to the given value. */
845
+ "type[ne]"?: string;
846
+ /** @description Filter by price. A comma-separated list matches any value; the literal `null` matches rows where price is unset. */
847
+ price?: string;
848
+ /** @description Filter where price is not equal to the given value. */
849
+ "price[ne]"?: number;
850
+ /** @description Filter where price is greater than the given value. */
851
+ "price[gt]"?: number;
852
+ /** @description Filter where price is greater than or equal to the given value. */
853
+ "price[gte]"?: number;
854
+ /** @description Filter where price is less than the given value. */
855
+ "price[lt]"?: number;
856
+ /** @description Filter where price is less than or equal to the given value. */
857
+ "price[lte]"?: number;
858
+ /** @description Filter by in_stock. A comma-separated list matches any value; the literal `null` matches rows where in_stock is unset. */
859
+ in_stock?: string;
860
+ };
861
+ header?: never;
862
+ path: {
863
+ /** @description Category id or handle (URL slug). */
864
+ idOrHandle: string;
865
+ };
866
+ cookie?: never;
867
+ };
868
+ requestBody?: never;
869
+ responses: {
870
+ /** @description Success */
871
+ 200: {
872
+ headers: {
873
+ [name: string]: unknown;
874
+ };
875
+ content: {
876
+ "application/json": {
877
+ data: components["schemas"]["ProductListItem"][];
878
+ meta: components["schemas"]["PaginationMeta"];
879
+ };
880
+ };
881
+ };
882
+ /** @description Invalid request — unknown parameter or bad value. */
883
+ 400: {
884
+ headers: {
885
+ [name: string]: unknown;
886
+ };
887
+ content: {
888
+ "application/json": components["schemas"]["Error"];
889
+ };
890
+ };
891
+ /** @description Rate limit exceeded. */
892
+ 429: {
893
+ headers: {
894
+ [name: string]: unknown;
895
+ };
896
+ content: {
897
+ "application/json": components["schemas"]["Error"];
898
+ };
899
+ };
900
+ };
901
+ };
902
+ put?: never;
903
+ post?: never;
904
+ delete?: never;
905
+ options?: never;
906
+ head?: never;
907
+ patch?: never;
908
+ trace?: never;
909
+ };
910
+ "/collections": {
911
+ parameters: {
912
+ query?: never;
913
+ header?: never;
914
+ path?: never;
915
+ cookie?: never;
916
+ };
917
+ /**
918
+ * List collections
919
+ * @description `expand=products` previews the first 20 products of each collection and sets `products_has_more`; page `/collections/{handle}/products` for the rest.
920
+ */
921
+ get: {
922
+ parameters: {
923
+ query?: {
924
+ /** @description 1-based page number. */
925
+ page?: number;
926
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
927
+ limit?: number;
928
+ /** @description Free-text search term. */
929
+ q?: string;
930
+ /** @description Comma-separated sort fields, `-` prefix for descending (e.g. `-created_at,title`). Allowed: title, created_at. */
931
+ sort?: string;
932
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
933
+ expand?: string;
934
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
935
+ fields?: string;
936
+ /** @description Filter by handle. A comma-separated list matches any value; the literal `null` matches rows where handle is unset. */
937
+ handle?: string;
938
+ /** @description Filter where handle is not equal to the given value. */
939
+ "handle[ne]"?: string;
940
+ /** @description Filter where handle is case-insensitive substring match the given value. */
941
+ "handle[like]"?: string;
942
+ };
943
+ header?: never;
944
+ path?: never;
945
+ cookie?: never;
946
+ };
947
+ requestBody?: never;
948
+ responses: {
949
+ /** @description Success */
950
+ 200: {
951
+ headers: {
952
+ [name: string]: unknown;
953
+ };
954
+ content: {
955
+ "application/json": {
956
+ data: components["schemas"]["Collection"][];
957
+ meta: components["schemas"]["PaginationMeta"];
958
+ };
959
+ };
960
+ };
961
+ /** @description Invalid request — unknown parameter or bad value. */
962
+ 400: {
963
+ headers: {
964
+ [name: string]: unknown;
965
+ };
966
+ content: {
967
+ "application/json": components["schemas"]["Error"];
968
+ };
969
+ };
970
+ /** @description Rate limit exceeded. */
971
+ 429: {
972
+ headers: {
973
+ [name: string]: unknown;
974
+ };
975
+ content: {
976
+ "application/json": components["schemas"]["Error"];
977
+ };
978
+ };
979
+ };
980
+ };
981
+ put?: never;
982
+ post?: never;
983
+ delete?: never;
984
+ options?: never;
985
+ head?: never;
986
+ patch?: never;
987
+ trace?: never;
988
+ };
989
+ "/collections/{handle}": {
990
+ parameters: {
991
+ query?: never;
992
+ header?: never;
993
+ path?: never;
994
+ cookie?: never;
995
+ };
996
+ /** Get a collection by handle */
997
+ get: {
998
+ parameters: {
999
+ query?: {
1000
+ /** @description 1-based page number. */
1001
+ page?: number;
1002
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
1003
+ limit?: number;
1004
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
1005
+ expand?: string;
1006
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
1007
+ fields?: string;
1008
+ };
1009
+ header?: never;
1010
+ path: {
1011
+ /** @description Collection handle (URL slug). */
1012
+ handle: string;
1013
+ };
1014
+ cookie?: never;
1015
+ };
1016
+ requestBody?: never;
1017
+ responses: {
1018
+ /** @description Success */
1019
+ 200: {
1020
+ headers: {
1021
+ [name: string]: unknown;
1022
+ };
1023
+ content: {
1024
+ "application/json": {
1025
+ data: components["schemas"]["Collection"];
1026
+ };
1027
+ };
1028
+ };
1029
+ /** @description Invalid request — unknown parameter or bad value. */
1030
+ 400: {
1031
+ headers: {
1032
+ [name: string]: unknown;
1033
+ };
1034
+ content: {
1035
+ "application/json": components["schemas"]["Error"];
1036
+ };
1037
+ };
1038
+ /** @description Rate limit exceeded. */
1039
+ 429: {
1040
+ headers: {
1041
+ [name: string]: unknown;
1042
+ };
1043
+ content: {
1044
+ "application/json": components["schemas"]["Error"];
1045
+ };
1046
+ };
1047
+ };
1048
+ };
1049
+ put?: never;
1050
+ post?: never;
1051
+ delete?: never;
1052
+ options?: never;
1053
+ head?: never;
1054
+ patch?: never;
1055
+ trace?: never;
1056
+ };
1057
+ "/collections/{handle}/products": {
1058
+ parameters: {
1059
+ query?: never;
1060
+ header?: never;
1061
+ path?: never;
1062
+ cookie?: never;
1063
+ };
1064
+ /**
1065
+ * List a collection's products
1066
+ * @description The full product query grammar, scoped to this collection. `collection_id` may be sent as well to narrow further.
1067
+ */
1068
+ get: {
1069
+ parameters: {
1070
+ query?: {
1071
+ /** @description 1-based page number. */
1072
+ page?: number;
1073
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
1074
+ limit?: number;
1075
+ /** @description Free-text search term. */
1076
+ q?: string;
1077
+ /** @description ISO 4217 code to price against, e.g. `CAD`. Must be one the store supports. Defaults to the store's default currency. */
1078
+ currency?: string;
1079
+ /** @description Comma-separated sort fields, `-` prefix for descending (e.g. `-created_at,title`). Allowed: title, created_at, updated_at, price. */
1080
+ sort?: string;
1081
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
1082
+ expand?: string;
1083
+ /** @description Comma-separated fields to return. Omitted fields are absent from the response. */
1084
+ fields?: string;
1085
+ /** @description Filter by category_id. A comma-separated list matches any value; the literal `null` matches rows where category_id is unset. */
1086
+ category_id?: string;
1087
+ /** @description Filter where category_id is not equal to the given value. */
1088
+ "category_id[ne]"?: string;
1089
+ /** @description Filter by collection_id. A comma-separated list matches any value; the literal `null` matches rows where collection_id is unset. */
1090
+ collection_id?: string;
1091
+ /** @description Filter where collection_id is not equal to the given value. */
1092
+ "collection_id[ne]"?: string;
1093
+ /** @description Filter by handle. A comma-separated list matches any value; the literal `null` matches rows where handle is unset. */
1094
+ handle?: string;
1095
+ /** @description Filter where handle is not equal to the given value. */
1096
+ "handle[ne]"?: string;
1097
+ /** @description Filter where handle is case-insensitive substring match the given value. */
1098
+ "handle[like]"?: string;
1099
+ /** @description Filter by tag. A comma-separated list matches any value; the literal `null` matches rows where tag is unset. */
1100
+ tag?: string;
1101
+ /** @description Filter where tag is not equal to the given value. */
1102
+ "tag[ne]"?: string;
1103
+ /** @description Filter by type. A comma-separated list matches any value; the literal `null` matches rows where type is unset. */
1104
+ type?: string;
1105
+ /** @description Filter where type is not equal to the given value. */
1106
+ "type[ne]"?: string;
1107
+ /** @description Filter by price. A comma-separated list matches any value; the literal `null` matches rows where price is unset. */
1108
+ price?: string;
1109
+ /** @description Filter where price is not equal to the given value. */
1110
+ "price[ne]"?: number;
1111
+ /** @description Filter where price is greater than the given value. */
1112
+ "price[gt]"?: number;
1113
+ /** @description Filter where price is greater than or equal to the given value. */
1114
+ "price[gte]"?: number;
1115
+ /** @description Filter where price is less than the given value. */
1116
+ "price[lt]"?: number;
1117
+ /** @description Filter where price is less than or equal to the given value. */
1118
+ "price[lte]"?: number;
1119
+ /** @description Filter by in_stock. A comma-separated list matches any value; the literal `null` matches rows where in_stock is unset. */
1120
+ in_stock?: string;
1121
+ };
1122
+ header?: never;
1123
+ path: {
1124
+ /** @description Collection handle (URL slug). */
1125
+ handle: string;
1126
+ };
1127
+ cookie?: never;
1128
+ };
1129
+ requestBody?: never;
1130
+ responses: {
1131
+ /** @description Success */
1132
+ 200: {
1133
+ headers: {
1134
+ [name: string]: unknown;
1135
+ };
1136
+ content: {
1137
+ "application/json": {
1138
+ data: components["schemas"]["ProductListItem"][];
1139
+ meta: components["schemas"]["PaginationMeta"];
1140
+ };
1141
+ };
1142
+ };
1143
+ /** @description Invalid request — unknown parameter or bad value. */
1144
+ 400: {
1145
+ headers: {
1146
+ [name: string]: unknown;
1147
+ };
1148
+ content: {
1149
+ "application/json": components["schemas"]["Error"];
1150
+ };
1151
+ };
1152
+ /** @description Rate limit exceeded. */
1153
+ 429: {
1154
+ headers: {
1155
+ [name: string]: unknown;
1156
+ };
1157
+ content: {
1158
+ "application/json": components["schemas"]["Error"];
1159
+ };
1160
+ };
1161
+ };
1162
+ };
1163
+ put?: never;
1164
+ post?: never;
1165
+ delete?: never;
1166
+ options?: never;
1167
+ head?: never;
1168
+ patch?: never;
1169
+ trace?: never;
1170
+ };
1171
+ "/store": {
1172
+ parameters: {
1173
+ query?: never;
1174
+ header?: never;
1175
+ path?: never;
1176
+ cookie?: never;
1177
+ };
1178
+ /**
1179
+ * Get the storefront bootstrap payload
1180
+ * @description Store name, currencies with their minor-unit exponents, and the default region. Call this once before rendering any price. Cacheable for 60 seconds.
1181
+ */
1182
+ get: {
1183
+ parameters: {
1184
+ query?: never;
1185
+ header?: never;
1186
+ path?: never;
1187
+ cookie?: never;
1188
+ };
1189
+ requestBody?: never;
1190
+ responses: {
1191
+ /** @description Success */
1192
+ 200: {
1193
+ headers: {
1194
+ [name: string]: unknown;
1195
+ };
1196
+ content: {
1197
+ "application/json": {
1198
+ data: components["schemas"]["Store"];
1199
+ };
1200
+ };
1201
+ };
1202
+ /** @description Invalid request — unknown parameter or bad value. */
1203
+ 400: {
1204
+ headers: {
1205
+ [name: string]: unknown;
1206
+ };
1207
+ content: {
1208
+ "application/json": components["schemas"]["Error"];
1209
+ };
1210
+ };
1211
+ /** @description Rate limit exceeded. */
1212
+ 429: {
1213
+ headers: {
1214
+ [name: string]: unknown;
1215
+ };
1216
+ content: {
1217
+ "application/json": components["schemas"]["Error"];
1218
+ };
1219
+ };
1220
+ };
1221
+ };
1222
+ put?: never;
1223
+ post?: never;
1224
+ delete?: never;
1225
+ options?: never;
1226
+ head?: never;
1227
+ patch?: never;
1228
+ trace?: never;
1229
+ };
1230
+ "/payment-methods": {
1231
+ parameters: {
1232
+ query?: never;
1233
+ header?: never;
1234
+ path?: never;
1235
+ cookie?: never;
1236
+ };
1237
+ /**
1238
+ * List the payment providers this store accepts
1239
+ * @description Only providers the merchant has enabled. Each carries the client-side configuration its own SDK needs — a publishable key, a display name — and never anything derived from a secret. Call this before rendering the payment step.
1240
+ */
1241
+ get: {
1242
+ parameters: {
1243
+ query?: never;
1244
+ header?: never;
1245
+ path?: never;
1246
+ cookie?: never;
1247
+ };
1248
+ requestBody?: never;
1249
+ responses: {
1250
+ /** @description Success */
1251
+ 200: {
1252
+ headers: {
1253
+ [name: string]: unknown;
1254
+ };
1255
+ content: {
1256
+ "application/json": {
1257
+ data: components["schemas"]["PaymentMethod"][];
1258
+ meta: components["schemas"]["PaginationMeta"];
1259
+ };
1260
+ };
1261
+ };
1262
+ /** @description Invalid request — unknown parameter or bad value. */
1263
+ 400: {
1264
+ headers: {
1265
+ [name: string]: unknown;
1266
+ };
1267
+ content: {
1268
+ "application/json": components["schemas"]["Error"];
1269
+ };
1270
+ };
1271
+ /** @description Rate limit exceeded. */
1272
+ 429: {
1273
+ headers: {
1274
+ [name: string]: unknown;
1275
+ };
1276
+ content: {
1277
+ "application/json": components["schemas"]["Error"];
1278
+ };
1279
+ };
1280
+ };
1281
+ };
1282
+ put?: never;
1283
+ post?: never;
1284
+ delete?: never;
1285
+ options?: never;
1286
+ head?: never;
1287
+ patch?: never;
1288
+ trace?: never;
1289
+ };
1290
+ "/regions": {
1291
+ parameters: {
1292
+ query?: never;
1293
+ header?: never;
1294
+ path?: never;
1295
+ cookie?: never;
1296
+ };
1297
+ /**
1298
+ * List regions
1299
+ * @description Unpaginated — a store has a handful of regions.
1300
+ */
1301
+ get: {
1302
+ parameters: {
1303
+ query?: never;
1304
+ header?: never;
1305
+ path?: never;
1306
+ cookie?: never;
1307
+ };
1308
+ requestBody?: never;
1309
+ responses: {
1310
+ /** @description Success */
1311
+ 200: {
1312
+ headers: {
1313
+ [name: string]: unknown;
1314
+ };
1315
+ content: {
1316
+ "application/json": {
1317
+ data: components["schemas"]["Region"][];
1318
+ meta: components["schemas"]["PaginationMeta"];
1319
+ };
1320
+ };
1321
+ };
1322
+ /** @description Invalid request — unknown parameter or bad value. */
1323
+ 400: {
1324
+ headers: {
1325
+ [name: string]: unknown;
1326
+ };
1327
+ content: {
1328
+ "application/json": components["schemas"]["Error"];
1329
+ };
1330
+ };
1331
+ /** @description Rate limit exceeded. */
1332
+ 429: {
1333
+ headers: {
1334
+ [name: string]: unknown;
1335
+ };
1336
+ content: {
1337
+ "application/json": components["schemas"]["Error"];
1338
+ };
1339
+ };
1340
+ };
1341
+ };
1342
+ put?: never;
1343
+ post?: never;
1344
+ delete?: never;
1345
+ options?: never;
1346
+ head?: never;
1347
+ patch?: never;
1348
+ trace?: never;
1349
+ };
1350
+ "/regions/{id}": {
1351
+ parameters: {
1352
+ query?: never;
1353
+ header?: never;
1354
+ path?: never;
1355
+ cookie?: never;
1356
+ };
1357
+ /**
1358
+ * Get a region
1359
+ * @description Includes the region's tax rates.
1360
+ */
1361
+ get: {
1362
+ parameters: {
1363
+ query?: never;
1364
+ header?: never;
1365
+ path: {
1366
+ /** @description Region id. */
1367
+ id: string;
1368
+ };
1369
+ cookie?: never;
1370
+ };
1371
+ requestBody?: never;
1372
+ responses: {
1373
+ /** @description Success */
1374
+ 200: {
1375
+ headers: {
1376
+ [name: string]: unknown;
1377
+ };
1378
+ content: {
1379
+ "application/json": {
1380
+ data: components["schemas"]["Region"];
1381
+ };
1382
+ };
1383
+ };
1384
+ /** @description Invalid request — unknown parameter or bad value. */
1385
+ 400: {
1386
+ headers: {
1387
+ [name: string]: unknown;
1388
+ };
1389
+ content: {
1390
+ "application/json": components["schemas"]["Error"];
1391
+ };
1392
+ };
1393
+ /** @description Rate limit exceeded. */
1394
+ 429: {
1395
+ headers: {
1396
+ [name: string]: unknown;
1397
+ };
1398
+ content: {
1399
+ "application/json": components["schemas"]["Error"];
1400
+ };
1401
+ };
1402
+ };
1403
+ };
1404
+ put?: never;
1405
+ post?: never;
1406
+ delete?: never;
1407
+ options?: never;
1408
+ head?: never;
1409
+ patch?: never;
1410
+ trace?: never;
1411
+ };
1412
+ "/currencies": {
1413
+ parameters: {
1414
+ query?: never;
1415
+ header?: never;
1416
+ path?: never;
1417
+ cookie?: never;
1418
+ };
1419
+ /**
1420
+ * List supported currencies
1421
+ * @description `decimal_digits` is the ISO 4217 minor-unit exponent — every amount on this API is an integer in minor units.
1422
+ */
1423
+ get: {
1424
+ parameters: {
1425
+ query?: never;
1426
+ header?: never;
1427
+ path?: never;
1428
+ cookie?: never;
1429
+ };
1430
+ requestBody?: never;
1431
+ responses: {
1432
+ /** @description Success */
1433
+ 200: {
1434
+ headers: {
1435
+ [name: string]: unknown;
1436
+ };
1437
+ content: {
1438
+ "application/json": {
1439
+ data: components["schemas"]["Currency"][];
1440
+ meta: components["schemas"]["PaginationMeta"];
1441
+ };
1442
+ };
1443
+ };
1444
+ /** @description Invalid request — unknown parameter or bad value. */
1445
+ 400: {
1446
+ headers: {
1447
+ [name: string]: unknown;
1448
+ };
1449
+ content: {
1450
+ "application/json": components["schemas"]["Error"];
1451
+ };
1452
+ };
1453
+ /** @description Rate limit exceeded. */
1454
+ 429: {
1455
+ headers: {
1456
+ [name: string]: unknown;
1457
+ };
1458
+ content: {
1459
+ "application/json": components["schemas"]["Error"];
1460
+ };
1461
+ };
1462
+ };
1463
+ };
1464
+ put?: never;
1465
+ post?: never;
1466
+ delete?: never;
1467
+ options?: never;
1468
+ head?: never;
1469
+ patch?: never;
1470
+ trace?: never;
1471
+ };
1472
+ "/tax-rate": {
1473
+ parameters: {
1474
+ query?: never;
1475
+ header?: never;
1476
+ path?: never;
1477
+ cookie?: never;
1478
+ };
1479
+ /**
1480
+ * Get the applicable tax summary
1481
+ * @description `location_id` takes precedence over `region_id`; either falls back to the store default. `configured` is false when no tax rates have been entered — a rate of 0 alone does not mean tax-free.
1482
+ */
1483
+ get: {
1484
+ parameters: {
1485
+ query?: {
1486
+ /** @description Resolve tax from this location's region. */
1487
+ location_id?: string;
1488
+ /** @description Resolve tax from this region. Ignored if location_id is sent. */
1489
+ region_id?: string;
1490
+ };
1491
+ header?: never;
1492
+ path?: never;
1493
+ cookie?: never;
1494
+ };
1495
+ requestBody?: never;
1496
+ responses: {
1497
+ /** @description Success */
1498
+ 200: {
1499
+ headers: {
1500
+ [name: string]: unknown;
1501
+ };
1502
+ content: {
1503
+ "application/json": {
1504
+ data: components["schemas"]["TaxSummary"];
1505
+ };
1506
+ };
1507
+ };
1508
+ /** @description Invalid request — unknown parameter or bad value. */
1509
+ 400: {
1510
+ headers: {
1511
+ [name: string]: unknown;
1512
+ };
1513
+ content: {
1514
+ "application/json": components["schemas"]["Error"];
1515
+ };
1516
+ };
1517
+ /** @description Rate limit exceeded. */
1518
+ 429: {
1519
+ headers: {
1520
+ [name: string]: unknown;
1521
+ };
1522
+ content: {
1523
+ "application/json": components["schemas"]["Error"];
1524
+ };
1525
+ };
1526
+ };
1527
+ };
1528
+ put?: never;
1529
+ post?: never;
1530
+ delete?: never;
1531
+ options?: never;
1532
+ head?: never;
1533
+ patch?: never;
1534
+ trace?: never;
1535
+ };
1536
+ "/auth/register": {
1537
+ parameters: {
1538
+ query?: never;
1539
+ header?: never;
1540
+ path?: never;
1541
+ cookie?: never;
1542
+ };
1543
+ get?: never;
1544
+ put?: never;
1545
+ /**
1546
+ * Register a customer
1547
+ * @description Returns a session. An email that already has an account is not reported as taken — the password is checked against it, and a mismatch answers with the same generic credential error as a failed login. A guest record from a previous checkout is upgraded in place, keeping that order history.
1548
+ */
1549
+ post: {
1550
+ parameters: {
1551
+ query?: never;
1552
+ header?: never;
1553
+ path?: never;
1554
+ cookie?: never;
1555
+ };
1556
+ requestBody: {
1557
+ content: {
1558
+ "application/json": components["schemas"]["RegisterBody"];
1559
+ };
1560
+ };
1561
+ responses: {
1562
+ /** @description Success */
1563
+ 200: {
1564
+ headers: {
1565
+ [name: string]: unknown;
1566
+ };
1567
+ content: {
1568
+ "application/json": {
1569
+ data: components["schemas"]["AuthSession"];
1570
+ };
1571
+ };
1572
+ };
1573
+ /** @description Invalid request — unknown parameter or bad value. */
1574
+ 400: {
1575
+ headers: {
1576
+ [name: string]: unknown;
1577
+ };
1578
+ content: {
1579
+ "application/json": components["schemas"]["Error"];
1580
+ };
1581
+ };
1582
+ /** @description Rate limit exceeded. */
1583
+ 429: {
1584
+ headers: {
1585
+ [name: string]: unknown;
1586
+ };
1587
+ content: {
1588
+ "application/json": components["schemas"]["Error"];
1589
+ };
1590
+ };
1591
+ };
1592
+ };
1593
+ delete?: never;
1594
+ options?: never;
1595
+ head?: never;
1596
+ patch?: never;
1597
+ trace?: never;
1598
+ };
1599
+ "/auth/login": {
1600
+ parameters: {
1601
+ query?: never;
1602
+ header?: never;
1603
+ path?: never;
1604
+ cookie?: never;
1605
+ };
1606
+ get?: never;
1607
+ put?: never;
1608
+ /**
1609
+ * Log in
1610
+ * @description Sets the `sonic_token` cookie and returns the same JWT in the body. Cross-origin storefronts should send it as `Authorization: Bearer` rather than relying on the cookie.
1611
+ */
1612
+ post: {
1613
+ parameters: {
1614
+ query?: never;
1615
+ header?: never;
1616
+ path?: never;
1617
+ cookie?: never;
1618
+ };
1619
+ requestBody: {
1620
+ content: {
1621
+ "application/json": components["schemas"]["LoginBody"];
1622
+ };
1623
+ };
1624
+ responses: {
1625
+ /** @description Success */
1626
+ 200: {
1627
+ headers: {
1628
+ [name: string]: unknown;
1629
+ };
1630
+ content: {
1631
+ "application/json": {
1632
+ data: components["schemas"]["AuthSession"];
1633
+ };
1634
+ };
1635
+ };
1636
+ /** @description Invalid request — unknown parameter or bad value. */
1637
+ 400: {
1638
+ headers: {
1639
+ [name: string]: unknown;
1640
+ };
1641
+ content: {
1642
+ "application/json": components["schemas"]["Error"];
1643
+ };
1644
+ };
1645
+ /** @description Rate limit exceeded. */
1646
+ 429: {
1647
+ headers: {
1648
+ [name: string]: unknown;
1649
+ };
1650
+ content: {
1651
+ "application/json": components["schemas"]["Error"];
1652
+ };
1653
+ };
1654
+ };
1655
+ };
1656
+ delete?: never;
1657
+ options?: never;
1658
+ head?: never;
1659
+ patch?: never;
1660
+ trace?: never;
1661
+ };
1662
+ "/auth/logout": {
1663
+ parameters: {
1664
+ query?: never;
1665
+ header?: never;
1666
+ path?: never;
1667
+ cookie?: never;
1668
+ };
1669
+ get?: never;
1670
+ put?: never;
1671
+ /**
1672
+ * Log out
1673
+ * @description Revokes the session behind the presented token.
1674
+ */
1675
+ post: {
1676
+ parameters: {
1677
+ query?: never;
1678
+ header?: never;
1679
+ path?: never;
1680
+ cookie?: never;
1681
+ };
1682
+ requestBody?: never;
1683
+ responses: {
1684
+ /** @description Success */
1685
+ 200: {
1686
+ headers: {
1687
+ [name: string]: unknown;
1688
+ };
1689
+ content?: never;
1690
+ };
1691
+ /** @description Invalid request — unknown parameter or bad value. */
1692
+ 400: {
1693
+ headers: {
1694
+ [name: string]: unknown;
1695
+ };
1696
+ content: {
1697
+ "application/json": components["schemas"]["Error"];
1698
+ };
1699
+ };
1700
+ /** @description Missing or invalid customer credentials. */
1701
+ 401: {
1702
+ headers: {
1703
+ [name: string]: unknown;
1704
+ };
1705
+ content: {
1706
+ "application/json": components["schemas"]["Error"];
1707
+ };
1708
+ };
1709
+ /** @description Rate limit exceeded. */
1710
+ 429: {
1711
+ headers: {
1712
+ [name: string]: unknown;
1713
+ };
1714
+ content: {
1715
+ "application/json": components["schemas"]["Error"];
1716
+ };
1717
+ };
1718
+ };
1719
+ };
1720
+ delete?: never;
1721
+ options?: never;
1722
+ head?: never;
1723
+ patch?: never;
1724
+ trace?: never;
1725
+ };
1726
+ "/auth/me": {
1727
+ parameters: {
1728
+ query?: never;
1729
+ header?: never;
1730
+ path?: never;
1731
+ cookie?: never;
1732
+ };
1733
+ /** Get the current customer */
1734
+ get: {
1735
+ parameters: {
1736
+ query?: never;
1737
+ header?: never;
1738
+ path?: never;
1739
+ cookie?: never;
1740
+ };
1741
+ requestBody?: never;
1742
+ responses: {
1743
+ /** @description Success */
1744
+ 200: {
1745
+ headers: {
1746
+ [name: string]: unknown;
1747
+ };
1748
+ content: {
1749
+ "application/json": {
1750
+ data: components["schemas"]["Customer"];
1751
+ };
1752
+ };
1753
+ };
1754
+ /** @description Invalid request — unknown parameter or bad value. */
1755
+ 400: {
1756
+ headers: {
1757
+ [name: string]: unknown;
1758
+ };
1759
+ content: {
1760
+ "application/json": components["schemas"]["Error"];
1761
+ };
1762
+ };
1763
+ /** @description Missing or invalid customer credentials. */
1764
+ 401: {
1765
+ headers: {
1766
+ [name: string]: unknown;
1767
+ };
1768
+ content: {
1769
+ "application/json": components["schemas"]["Error"];
1770
+ };
1771
+ };
1772
+ /** @description Rate limit exceeded. */
1773
+ 429: {
1774
+ headers: {
1775
+ [name: string]: unknown;
1776
+ };
1777
+ content: {
1778
+ "application/json": components["schemas"]["Error"];
1779
+ };
1780
+ };
1781
+ };
1782
+ };
1783
+ put?: never;
1784
+ post?: never;
1785
+ delete?: never;
1786
+ options?: never;
1787
+ head?: never;
1788
+ patch?: never;
1789
+ trace?: never;
1790
+ };
1791
+ "/carts": {
1792
+ parameters: {
1793
+ query?: never;
1794
+ header?: never;
1795
+ path?: never;
1796
+ cookie?: never;
1797
+ };
1798
+ get?: never;
1799
+ put?: never;
1800
+ /**
1801
+ * Create a cart
1802
+ * @description Rate limited more tightly than the rest of the API. When the request carries a customer token the cart is bound to that customer and only they may modify it afterwards.
1803
+ */
1804
+ post: {
1805
+ parameters: {
1806
+ query?: never;
1807
+ header?: never;
1808
+ path?: never;
1809
+ cookie?: never;
1810
+ };
1811
+ requestBody?: never;
1812
+ responses: {
1813
+ /** @description Success */
1814
+ 200: {
1815
+ headers: {
1816
+ [name: string]: unknown;
1817
+ };
1818
+ content: {
1819
+ "application/json": {
1820
+ data: components["schemas"]["Cart"];
1821
+ };
1822
+ };
1823
+ };
1824
+ /** @description Invalid request — unknown parameter or bad value. */
1825
+ 400: {
1826
+ headers: {
1827
+ [name: string]: unknown;
1828
+ };
1829
+ content: {
1830
+ "application/json": components["schemas"]["Error"];
1831
+ };
1832
+ };
1833
+ /** @description Rate limit exceeded. */
1834
+ 429: {
1835
+ headers: {
1836
+ [name: string]: unknown;
1837
+ };
1838
+ content: {
1839
+ "application/json": components["schemas"]["Error"];
1840
+ };
1841
+ };
1842
+ };
1843
+ };
1844
+ delete?: never;
1845
+ options?: never;
1846
+ head?: never;
1847
+ patch?: never;
1848
+ trace?: never;
1849
+ };
1850
+ "/carts/{id}": {
1851
+ parameters: {
1852
+ query?: never;
1853
+ header?: never;
1854
+ path?: never;
1855
+ cookie?: never;
1856
+ };
1857
+ /** Get a cart */
1858
+ get: {
1859
+ parameters: {
1860
+ query?: never;
1861
+ header?: never;
1862
+ path: {
1863
+ /** @description Cart id. */
1864
+ id: string;
1865
+ };
1866
+ cookie?: never;
1867
+ };
1868
+ requestBody?: never;
1869
+ responses: {
1870
+ /** @description Success */
1871
+ 200: {
1872
+ headers: {
1873
+ [name: string]: unknown;
1874
+ };
1875
+ content: {
1876
+ "application/json": {
1877
+ data: components["schemas"]["Cart"];
1878
+ };
1879
+ };
1880
+ };
1881
+ /** @description Invalid request — unknown parameter or bad value. */
1882
+ 400: {
1883
+ headers: {
1884
+ [name: string]: unknown;
1885
+ };
1886
+ content: {
1887
+ "application/json": components["schemas"]["Error"];
1888
+ };
1889
+ };
1890
+ /** @description Rate limit exceeded. */
1891
+ 429: {
1892
+ headers: {
1893
+ [name: string]: unknown;
1894
+ };
1895
+ content: {
1896
+ "application/json": components["schemas"]["Error"];
1897
+ };
1898
+ };
1899
+ };
1900
+ };
1901
+ put?: never;
1902
+ post?: never;
1903
+ delete?: never;
1904
+ options?: never;
1905
+ head?: never;
1906
+ patch?: never;
1907
+ trace?: never;
1908
+ };
1909
+ "/carts/{id}/items": {
1910
+ parameters: {
1911
+ query?: never;
1912
+ header?: never;
1913
+ path?: never;
1914
+ cookie?: never;
1915
+ };
1916
+ get?: never;
1917
+ put?: never;
1918
+ /**
1919
+ * Add a line item
1920
+ * @description The price is resolved from the catalogue in the cart's currency — a client cannot supply one.
1921
+ */
1922
+ post: {
1923
+ parameters: {
1924
+ query?: never;
1925
+ header?: never;
1926
+ path: {
1927
+ /** @description Cart id. */
1928
+ id: string;
1929
+ };
1930
+ cookie?: never;
1931
+ };
1932
+ requestBody: {
1933
+ content: {
1934
+ "application/json": components["schemas"]["AddCartItemBody"];
1935
+ };
1936
+ };
1937
+ responses: {
1938
+ /** @description Success */
1939
+ 200: {
1940
+ headers: {
1941
+ [name: string]: unknown;
1942
+ };
1943
+ content: {
1944
+ "application/json": {
1945
+ data: components["schemas"]["Cart"];
1946
+ };
1947
+ };
1948
+ };
1949
+ /** @description Invalid request — unknown parameter or bad value. */
1950
+ 400: {
1951
+ headers: {
1952
+ [name: string]: unknown;
1953
+ };
1954
+ content: {
1955
+ "application/json": components["schemas"]["Error"];
1956
+ };
1957
+ };
1958
+ /** @description Rate limit exceeded. */
1959
+ 429: {
1960
+ headers: {
1961
+ [name: string]: unknown;
1962
+ };
1963
+ content: {
1964
+ "application/json": components["schemas"]["Error"];
1965
+ };
1966
+ };
1967
+ };
1968
+ };
1969
+ delete?: never;
1970
+ options?: never;
1971
+ head?: never;
1972
+ patch?: never;
1973
+ trace?: never;
1974
+ };
1975
+ "/carts/{id}/items/{itemId}": {
1976
+ parameters: {
1977
+ query?: never;
1978
+ header?: never;
1979
+ path?: never;
1980
+ cookie?: never;
1981
+ };
1982
+ get?: never;
1983
+ /** Update a line item */
1984
+ put: {
1985
+ parameters: {
1986
+ query?: never;
1987
+ header?: never;
1988
+ path: {
1989
+ /** @description Cart id. */
1990
+ id: string;
1991
+ /** @description Line item id. */
1992
+ itemId: string;
1993
+ };
1994
+ cookie?: never;
1995
+ };
1996
+ requestBody: {
1997
+ content: {
1998
+ "application/json": components["schemas"]["UpdateCartItemBody"];
1999
+ };
2000
+ };
2001
+ responses: {
2002
+ /** @description Success */
2003
+ 200: {
2004
+ headers: {
2005
+ [name: string]: unknown;
2006
+ };
2007
+ content: {
2008
+ "application/json": {
2009
+ data: components["schemas"]["Cart"];
2010
+ };
2011
+ };
2012
+ };
2013
+ /** @description Invalid request — unknown parameter or bad value. */
2014
+ 400: {
2015
+ headers: {
2016
+ [name: string]: unknown;
2017
+ };
2018
+ content: {
2019
+ "application/json": components["schemas"]["Error"];
2020
+ };
2021
+ };
2022
+ /** @description Rate limit exceeded. */
2023
+ 429: {
2024
+ headers: {
2025
+ [name: string]: unknown;
2026
+ };
2027
+ content: {
2028
+ "application/json": components["schemas"]["Error"];
2029
+ };
2030
+ };
2031
+ };
2032
+ };
2033
+ post?: never;
2034
+ /** Remove a line item */
2035
+ delete: {
2036
+ parameters: {
2037
+ query?: never;
2038
+ header?: never;
2039
+ path: {
2040
+ /** @description Cart id. */
2041
+ id: string;
2042
+ /** @description Line item id. */
2043
+ itemId: string;
2044
+ };
2045
+ cookie?: never;
2046
+ };
2047
+ requestBody?: never;
2048
+ responses: {
2049
+ /** @description Success */
2050
+ 200: {
2051
+ headers: {
2052
+ [name: string]: unknown;
2053
+ };
2054
+ content: {
2055
+ "application/json": {
2056
+ data: components["schemas"]["Cart"];
2057
+ };
2058
+ };
2059
+ };
2060
+ /** @description Invalid request — unknown parameter or bad value. */
2061
+ 400: {
2062
+ headers: {
2063
+ [name: string]: unknown;
2064
+ };
2065
+ content: {
2066
+ "application/json": components["schemas"]["Error"];
2067
+ };
2068
+ };
2069
+ /** @description Rate limit exceeded. */
2070
+ 429: {
2071
+ headers: {
2072
+ [name: string]: unknown;
2073
+ };
2074
+ content: {
2075
+ "application/json": components["schemas"]["Error"];
2076
+ };
2077
+ };
2078
+ };
2079
+ };
2080
+ options?: never;
2081
+ head?: never;
2082
+ patch?: never;
2083
+ trace?: never;
2084
+ };
2085
+ "/carts/{id}/customer": {
2086
+ parameters: {
2087
+ query?: never;
2088
+ header?: never;
2089
+ path?: never;
2090
+ cookie?: never;
2091
+ };
2092
+ get?: never;
2093
+ /** Set the cart's customer */
2094
+ put: {
2095
+ parameters: {
2096
+ query?: never;
2097
+ header?: never;
2098
+ path: {
2099
+ /** @description Cart id. */
2100
+ id: string;
2101
+ };
2102
+ cookie?: never;
2103
+ };
2104
+ requestBody: {
2105
+ content: {
2106
+ "application/json": components["schemas"]["SetCartCustomerBody"];
2107
+ };
2108
+ };
2109
+ responses: {
2110
+ /** @description Success */
2111
+ 200: {
2112
+ headers: {
2113
+ [name: string]: unknown;
2114
+ };
2115
+ content: {
2116
+ "application/json": {
2117
+ data: components["schemas"]["Cart"];
2118
+ };
2119
+ };
2120
+ };
2121
+ /** @description Invalid request — unknown parameter or bad value. */
2122
+ 400: {
2123
+ headers: {
2124
+ [name: string]: unknown;
2125
+ };
2126
+ content: {
2127
+ "application/json": components["schemas"]["Error"];
2128
+ };
2129
+ };
2130
+ /** @description Rate limit exceeded. */
2131
+ 429: {
2132
+ headers: {
2133
+ [name: string]: unknown;
2134
+ };
2135
+ content: {
2136
+ "application/json": components["schemas"]["Error"];
2137
+ };
2138
+ };
2139
+ };
2140
+ };
2141
+ post?: never;
2142
+ delete?: never;
2143
+ options?: never;
2144
+ head?: never;
2145
+ patch?: never;
2146
+ trace?: never;
2147
+ };
2148
+ "/carts/{id}/shipping-address": {
2149
+ parameters: {
2150
+ query?: never;
2151
+ header?: never;
2152
+ path?: never;
2153
+ cookie?: never;
2154
+ };
2155
+ get?: never;
2156
+ /** Set the shipping address */
2157
+ put: {
2158
+ parameters: {
2159
+ query?: never;
2160
+ header?: never;
2161
+ path: {
2162
+ /** @description Cart id. */
2163
+ id: string;
2164
+ };
2165
+ cookie?: never;
2166
+ };
2167
+ requestBody: {
2168
+ content: {
2169
+ "application/json": components["schemas"]["CartAddressBody"];
2170
+ };
2171
+ };
2172
+ responses: {
2173
+ /** @description Success */
2174
+ 200: {
2175
+ headers: {
2176
+ [name: string]: unknown;
2177
+ };
2178
+ content: {
2179
+ "application/json": {
2180
+ data: components["schemas"]["Cart"];
2181
+ };
2182
+ };
2183
+ };
2184
+ /** @description Invalid request — unknown parameter or bad value. */
2185
+ 400: {
2186
+ headers: {
2187
+ [name: string]: unknown;
2188
+ };
2189
+ content: {
2190
+ "application/json": components["schemas"]["Error"];
2191
+ };
2192
+ };
2193
+ /** @description Rate limit exceeded. */
2194
+ 429: {
2195
+ headers: {
2196
+ [name: string]: unknown;
2197
+ };
2198
+ content: {
2199
+ "application/json": components["schemas"]["Error"];
2200
+ };
2201
+ };
2202
+ };
2203
+ };
2204
+ post?: never;
2205
+ delete?: never;
2206
+ options?: never;
2207
+ head?: never;
2208
+ patch?: never;
2209
+ trace?: never;
2210
+ };
2211
+ "/carts/{id}/billing-address": {
2212
+ parameters: {
2213
+ query?: never;
2214
+ header?: never;
2215
+ path?: never;
2216
+ cookie?: never;
2217
+ };
2218
+ get?: never;
2219
+ /** Set the billing address */
2220
+ put: {
2221
+ parameters: {
2222
+ query?: never;
2223
+ header?: never;
2224
+ path: {
2225
+ /** @description Cart id. */
2226
+ id: string;
2227
+ };
2228
+ cookie?: never;
2229
+ };
2230
+ requestBody: {
2231
+ content: {
2232
+ "application/json": components["schemas"]["CartAddressBody"];
2233
+ };
2234
+ };
2235
+ responses: {
2236
+ /** @description Success */
2237
+ 200: {
2238
+ headers: {
2239
+ [name: string]: unknown;
2240
+ };
2241
+ content: {
2242
+ "application/json": {
2243
+ data: components["schemas"]["Cart"];
2244
+ };
2245
+ };
2246
+ };
2247
+ /** @description Invalid request — unknown parameter or bad value. */
2248
+ 400: {
2249
+ headers: {
2250
+ [name: string]: unknown;
2251
+ };
2252
+ content: {
2253
+ "application/json": components["schemas"]["Error"];
2254
+ };
2255
+ };
2256
+ /** @description Rate limit exceeded. */
2257
+ 429: {
2258
+ headers: {
2259
+ [name: string]: unknown;
2260
+ };
2261
+ content: {
2262
+ "application/json": components["schemas"]["Error"];
2263
+ };
2264
+ };
2265
+ };
2266
+ };
2267
+ post?: never;
2268
+ delete?: never;
2269
+ options?: never;
2270
+ head?: never;
2271
+ patch?: never;
2272
+ trace?: never;
2273
+ };
2274
+ "/carts/{id}/region": {
2275
+ parameters: {
2276
+ query?: never;
2277
+ header?: never;
2278
+ path?: never;
2279
+ cookie?: never;
2280
+ };
2281
+ get?: never;
2282
+ /**
2283
+ * Switch the cart's region
2284
+ * @description Re-prices every line in the new region's currency. Rejected in full if any line has no price there — no line is silently dropped or left at the old currency's figure.
2285
+ */
2286
+ put: {
2287
+ parameters: {
2288
+ query?: never;
2289
+ header?: never;
2290
+ path: {
2291
+ /** @description Cart id. */
2292
+ id: string;
2293
+ };
2294
+ cookie?: never;
2295
+ };
2296
+ requestBody: {
2297
+ content: {
2298
+ "application/json": components["schemas"]["SetCartRegionBody"];
2299
+ };
2300
+ };
2301
+ responses: {
2302
+ /** @description Success */
2303
+ 200: {
2304
+ headers: {
2305
+ [name: string]: unknown;
2306
+ };
2307
+ content: {
2308
+ "application/json": {
2309
+ data: components["schemas"]["Cart"];
2310
+ };
2311
+ };
2312
+ };
2313
+ /** @description Invalid request — unknown parameter or bad value. */
2314
+ 400: {
2315
+ headers: {
2316
+ [name: string]: unknown;
2317
+ };
2318
+ content: {
2319
+ "application/json": components["schemas"]["Error"];
2320
+ };
2321
+ };
2322
+ /** @description Rate limit exceeded. */
2323
+ 429: {
2324
+ headers: {
2325
+ [name: string]: unknown;
2326
+ };
2327
+ content: {
2328
+ "application/json": components["schemas"]["Error"];
2329
+ };
2330
+ };
2331
+ };
2332
+ };
2333
+ post?: never;
2334
+ delete?: never;
2335
+ options?: never;
2336
+ head?: never;
2337
+ patch?: never;
2338
+ trace?: never;
2339
+ };
2340
+ "/carts/{id}/discounts": {
2341
+ parameters: {
2342
+ query?: never;
2343
+ header?: never;
2344
+ path?: never;
2345
+ cookie?: never;
2346
+ };
2347
+ get?: never;
2348
+ put?: never;
2349
+ /**
2350
+ * Apply a discount code
2351
+ * @description A rejection carries the reason (expired, below minimum spend, already used). One incentive per cart: a discount and a gift card cannot both be applied.
2352
+ */
2353
+ post: {
2354
+ parameters: {
2355
+ query?: never;
2356
+ header?: never;
2357
+ path: {
2358
+ /** @description Cart id. */
2359
+ id: string;
2360
+ };
2361
+ cookie?: never;
2362
+ };
2363
+ requestBody: {
2364
+ content: {
2365
+ "application/json": components["schemas"]["CartCodeBody"];
2366
+ };
2367
+ };
2368
+ responses: {
2369
+ /** @description Success */
2370
+ 200: {
2371
+ headers: {
2372
+ [name: string]: unknown;
2373
+ };
2374
+ content: {
2375
+ "application/json": {
2376
+ data: components["schemas"]["Cart"];
2377
+ };
2378
+ };
2379
+ };
2380
+ /** @description Invalid request — unknown parameter or bad value. */
2381
+ 400: {
2382
+ headers: {
2383
+ [name: string]: unknown;
2384
+ };
2385
+ content: {
2386
+ "application/json": components["schemas"]["Error"];
2387
+ };
2388
+ };
2389
+ /** @description Rate limit exceeded. */
2390
+ 429: {
2391
+ headers: {
2392
+ [name: string]: unknown;
2393
+ };
2394
+ content: {
2395
+ "application/json": components["schemas"]["Error"];
2396
+ };
2397
+ };
2398
+ };
2399
+ };
2400
+ delete?: never;
2401
+ options?: never;
2402
+ head?: never;
2403
+ patch?: never;
2404
+ trace?: never;
2405
+ };
2406
+ "/carts/{id}/discounts/{code}": {
2407
+ parameters: {
2408
+ query?: never;
2409
+ header?: never;
2410
+ path?: never;
2411
+ cookie?: never;
2412
+ };
2413
+ get?: never;
2414
+ put?: never;
2415
+ post?: never;
2416
+ /** Remove a discount code */
2417
+ delete: {
2418
+ parameters: {
2419
+ query?: never;
2420
+ header?: never;
2421
+ path: {
2422
+ /** @description Cart id. */
2423
+ id: string;
2424
+ /** @description The applied code. */
2425
+ code: string;
2426
+ };
2427
+ cookie?: never;
2428
+ };
2429
+ requestBody?: never;
2430
+ responses: {
2431
+ /** @description Success */
2432
+ 200: {
2433
+ headers: {
2434
+ [name: string]: unknown;
2435
+ };
2436
+ content: {
2437
+ "application/json": {
2438
+ data: components["schemas"]["Cart"];
2439
+ };
2440
+ };
2441
+ };
2442
+ /** @description Invalid request — unknown parameter or bad value. */
2443
+ 400: {
2444
+ headers: {
2445
+ [name: string]: unknown;
2446
+ };
2447
+ content: {
2448
+ "application/json": components["schemas"]["Error"];
2449
+ };
2450
+ };
2451
+ /** @description Rate limit exceeded. */
2452
+ 429: {
2453
+ headers: {
2454
+ [name: string]: unknown;
2455
+ };
2456
+ content: {
2457
+ "application/json": components["schemas"]["Error"];
2458
+ };
2459
+ };
2460
+ };
2461
+ };
2462
+ options?: never;
2463
+ head?: never;
2464
+ patch?: never;
2465
+ trace?: never;
2466
+ };
2467
+ "/carts/{id}/gift-cards": {
2468
+ parameters: {
2469
+ query?: never;
2470
+ header?: never;
2471
+ path?: never;
2472
+ cookie?: never;
2473
+ };
2474
+ get?: never;
2475
+ put?: never;
2476
+ /**
2477
+ * Apply a gift card
2478
+ * @description A gift card is a tender: it reduces `amount_due`, never `total`. The balance is only debited at completion.
2479
+ */
2480
+ post: {
2481
+ parameters: {
2482
+ query?: never;
2483
+ header?: never;
2484
+ path: {
2485
+ /** @description Cart id. */
2486
+ id: string;
2487
+ };
2488
+ cookie?: never;
2489
+ };
2490
+ requestBody: {
2491
+ content: {
2492
+ "application/json": components["schemas"]["CartCodeBody"];
2493
+ };
2494
+ };
2495
+ responses: {
2496
+ /** @description Success */
2497
+ 200: {
2498
+ headers: {
2499
+ [name: string]: unknown;
2500
+ };
2501
+ content: {
2502
+ "application/json": {
2503
+ data: components["schemas"]["Cart"];
2504
+ };
2505
+ };
2506
+ };
2507
+ /** @description Invalid request — unknown parameter or bad value. */
2508
+ 400: {
2509
+ headers: {
2510
+ [name: string]: unknown;
2511
+ };
2512
+ content: {
2513
+ "application/json": components["schemas"]["Error"];
2514
+ };
2515
+ };
2516
+ /** @description Rate limit exceeded. */
2517
+ 429: {
2518
+ headers: {
2519
+ [name: string]: unknown;
2520
+ };
2521
+ content: {
2522
+ "application/json": components["schemas"]["Error"];
2523
+ };
2524
+ };
2525
+ };
2526
+ };
2527
+ delete?: never;
2528
+ options?: never;
2529
+ head?: never;
2530
+ patch?: never;
2531
+ trace?: never;
2532
+ };
2533
+ "/carts/{id}/gift-cards/{code}": {
2534
+ parameters: {
2535
+ query?: never;
2536
+ header?: never;
2537
+ path?: never;
2538
+ cookie?: never;
2539
+ };
2540
+ get?: never;
2541
+ put?: never;
2542
+ post?: never;
2543
+ /** Remove a gift card */
2544
+ delete: {
2545
+ parameters: {
2546
+ query?: never;
2547
+ header?: never;
2548
+ path: {
2549
+ /** @description Cart id. */
2550
+ id: string;
2551
+ /** @description The applied code. */
2552
+ code: string;
2553
+ };
2554
+ cookie?: never;
2555
+ };
2556
+ requestBody?: never;
2557
+ responses: {
2558
+ /** @description Success */
2559
+ 200: {
2560
+ headers: {
2561
+ [name: string]: unknown;
2562
+ };
2563
+ content: {
2564
+ "application/json": {
2565
+ data: components["schemas"]["Cart"];
2566
+ };
2567
+ };
2568
+ };
2569
+ /** @description Invalid request — unknown parameter or bad value. */
2570
+ 400: {
2571
+ headers: {
2572
+ [name: string]: unknown;
2573
+ };
2574
+ content: {
2575
+ "application/json": components["schemas"]["Error"];
2576
+ };
2577
+ };
2578
+ /** @description Rate limit exceeded. */
2579
+ 429: {
2580
+ headers: {
2581
+ [name: string]: unknown;
2582
+ };
2583
+ content: {
2584
+ "application/json": components["schemas"]["Error"];
2585
+ };
2586
+ };
2587
+ };
2588
+ };
2589
+ options?: never;
2590
+ head?: never;
2591
+ patch?: never;
2592
+ trace?: never;
2593
+ };
2594
+ "/carts/{id}/complete": {
2595
+ parameters: {
2596
+ query?: never;
2597
+ header?: never;
2598
+ path?: never;
2599
+ cookie?: never;
2600
+ };
2601
+ get?: never;
2602
+ put?: never;
2603
+ /**
2604
+ * Complete the cart and place the order
2605
+ * @description Send an `Idempotency-Key` header: a retry returns the first response rather than placing a second order. The resulting order carries no shipping line — shipping is not modelled.
2606
+ */
2607
+ post: {
2608
+ parameters: {
2609
+ query?: never;
2610
+ header?: {
2611
+ /** @description Client-generated unique value. Replays return the stored response. */
2612
+ "Idempotency-Key"?: string;
2613
+ };
2614
+ path: {
2615
+ /** @description Cart id. */
2616
+ id: string;
2617
+ };
2618
+ cookie?: never;
2619
+ };
2620
+ requestBody?: never;
2621
+ responses: {
2622
+ /** @description Success */
2623
+ 200: {
2624
+ headers: {
2625
+ [name: string]: unknown;
2626
+ };
2627
+ content?: never;
2628
+ };
2629
+ /** @description Invalid request — unknown parameter or bad value. */
2630
+ 400: {
2631
+ headers: {
2632
+ [name: string]: unknown;
2633
+ };
2634
+ content: {
2635
+ "application/json": components["schemas"]["Error"];
2636
+ };
2637
+ };
2638
+ /** @description Rate limit exceeded. */
2639
+ 429: {
2640
+ headers: {
2641
+ [name: string]: unknown;
2642
+ };
2643
+ content: {
2644
+ "application/json": components["schemas"]["Error"];
2645
+ };
2646
+ };
2647
+ };
2648
+ };
2649
+ delete?: never;
2650
+ options?: never;
2651
+ head?: never;
2652
+ patch?: never;
2653
+ trace?: never;
2654
+ };
2655
+ "/sales-channels": {
2656
+ parameters: {
2657
+ query?: never;
2658
+ header?: never;
2659
+ path?: never;
2660
+ cookie?: never;
2661
+ };
2662
+ /**
2663
+ * List the key's sales channel
2664
+ * @description The single channel the request's publishable key is scoped to. Empty when no key resolves.
2665
+ */
2666
+ get: {
2667
+ parameters: {
2668
+ query?: never;
2669
+ header?: never;
2670
+ path?: never;
2671
+ cookie?: never;
2672
+ };
2673
+ requestBody?: never;
2674
+ responses: {
2675
+ /** @description Success */
2676
+ 200: {
2677
+ headers: {
2678
+ [name: string]: unknown;
2679
+ };
2680
+ content: {
2681
+ "application/json": {
2682
+ data: components["schemas"]["SalesChannel"][];
2683
+ meta: components["schemas"]["PaginationMeta"];
2684
+ };
2685
+ };
2686
+ };
2687
+ /** @description Invalid request — unknown parameter or bad value. */
2688
+ 400: {
2689
+ headers: {
2690
+ [name: string]: unknown;
2691
+ };
2692
+ content: {
2693
+ "application/json": components["schemas"]["Error"];
2694
+ };
2695
+ };
2696
+ /** @description Rate limit exceeded. */
2697
+ 429: {
2698
+ headers: {
2699
+ [name: string]: unknown;
2700
+ };
2701
+ content: {
2702
+ "application/json": components["schemas"]["Error"];
2703
+ };
2704
+ };
2705
+ };
2706
+ };
2707
+ put?: never;
2708
+ post?: never;
2709
+ delete?: never;
2710
+ options?: never;
2711
+ head?: never;
2712
+ patch?: never;
2713
+ trace?: never;
2714
+ };
2715
+ "/account/orders": {
2716
+ parameters: {
2717
+ query?: never;
2718
+ header?: never;
2719
+ path?: never;
2720
+ cookie?: never;
2721
+ };
2722
+ /**
2723
+ * List the customer's orders
2724
+ * @description Scoped to the authenticated customer by the query itself.
2725
+ */
2726
+ get: {
2727
+ parameters: {
2728
+ query?: {
2729
+ /** @description 1-based page number. */
2730
+ page?: number;
2731
+ /** @description Rows per page. Values above 100 are rejected, not clamped. */
2732
+ limit?: number;
2733
+ /** @description Comma-separated sort fields, `-` prefix for descending (e.g. `-created_at,title`). Allowed: created_at, total. */
2734
+ sort?: string;
2735
+ /** @description Comma-separated relations to include. Expanded relations appear as additional optional properties on the response; OpenAPI cannot express a response shape that varies by request. */
2736
+ expand?: string;
2737
+ /** @description Filter by status. A comma-separated list matches any value; the literal `null` matches rows where status is unset. */
2738
+ status?: string;
2739
+ /** @description Filter where status is not equal to the given value. */
2740
+ "status[ne]"?: string;
2741
+ /** @description Filter where status is case-insensitive substring match the given value. */
2742
+ "status[like]"?: string;
2743
+ /** @description Filter by created_at. A comma-separated list matches any value; the literal `null` matches rows where created_at is unset. */
2744
+ created_at?: string;
2745
+ /** @description Filter where created_at is not equal to the given value. */
2746
+ "created_at[ne]"?: string;
2747
+ /** @description Filter where created_at is greater than the given value. */
2748
+ "created_at[gt]"?: string;
2749
+ /** @description Filter where created_at is greater than or equal to the given value. */
2750
+ "created_at[gte]"?: string;
2751
+ /** @description Filter where created_at is less than the given value. */
2752
+ "created_at[lt]"?: string;
2753
+ /** @description Filter where created_at is less than or equal to the given value. */
2754
+ "created_at[lte]"?: string;
2755
+ };
2756
+ header?: never;
2757
+ path?: never;
2758
+ cookie?: never;
2759
+ };
2760
+ requestBody?: never;
2761
+ responses: {
2762
+ /** @description Success */
2763
+ 200: {
2764
+ headers: {
2765
+ [name: string]: unknown;
2766
+ };
2767
+ content: {
2768
+ "application/json": {
2769
+ data: components["schemas"]["OrderListItem"][];
2770
+ meta: components["schemas"]["PaginationMeta"];
2771
+ };
2772
+ };
2773
+ };
2774
+ /** @description Invalid request — unknown parameter or bad value. */
2775
+ 400: {
2776
+ headers: {
2777
+ [name: string]: unknown;
2778
+ };
2779
+ content: {
2780
+ "application/json": components["schemas"]["Error"];
2781
+ };
2782
+ };
2783
+ /** @description Missing or invalid customer credentials. */
2784
+ 401: {
2785
+ headers: {
2786
+ [name: string]: unknown;
2787
+ };
2788
+ content: {
2789
+ "application/json": components["schemas"]["Error"];
2790
+ };
2791
+ };
2792
+ /** @description Rate limit exceeded. */
2793
+ 429: {
2794
+ headers: {
2795
+ [name: string]: unknown;
2796
+ };
2797
+ content: {
2798
+ "application/json": components["schemas"]["Error"];
2799
+ };
2800
+ };
2801
+ };
2802
+ };
2803
+ put?: never;
2804
+ post?: never;
2805
+ delete?: never;
2806
+ options?: never;
2807
+ head?: never;
2808
+ patch?: never;
2809
+ trace?: never;
2810
+ };
2811
+ "/account/orders/{orderId}": {
2812
+ parameters: {
2813
+ query?: never;
2814
+ header?: never;
2815
+ path?: never;
2816
+ cookie?: never;
2817
+ };
2818
+ /**
2819
+ * Get one order
2820
+ * @description 404s identically whether the order is absent or belongs to someone else. Expands `items` and `shipping_address` by default.
2821
+ */
2822
+ get: {
2823
+ parameters: {
2824
+ query?: never;
2825
+ header?: never;
2826
+ path: {
2827
+ /** @description Order id. */
2828
+ orderId: string;
2829
+ };
2830
+ cookie?: never;
2831
+ };
2832
+ requestBody?: never;
2833
+ responses: {
2834
+ /** @description Success */
2835
+ 200: {
2836
+ headers: {
2837
+ [name: string]: unknown;
2838
+ };
2839
+ content: {
2840
+ "application/json": {
2841
+ data: components["schemas"]["Order"];
2842
+ };
2843
+ };
2844
+ };
2845
+ /** @description Invalid request — unknown parameter or bad value. */
2846
+ 400: {
2847
+ headers: {
2848
+ [name: string]: unknown;
2849
+ };
2850
+ content: {
2851
+ "application/json": components["schemas"]["Error"];
2852
+ };
2853
+ };
2854
+ /** @description Missing or invalid customer credentials. */
2855
+ 401: {
2856
+ headers: {
2857
+ [name: string]: unknown;
2858
+ };
2859
+ content: {
2860
+ "application/json": components["schemas"]["Error"];
2861
+ };
2862
+ };
2863
+ /** @description Rate limit exceeded. */
2864
+ 429: {
2865
+ headers: {
2866
+ [name: string]: unknown;
2867
+ };
2868
+ content: {
2869
+ "application/json": components["schemas"]["Error"];
2870
+ };
2871
+ };
2872
+ };
2873
+ };
2874
+ put?: never;
2875
+ post?: never;
2876
+ delete?: never;
2877
+ options?: never;
2878
+ head?: never;
2879
+ patch?: never;
2880
+ trace?: never;
2881
+ };
2882
+ "/account/orders/{orderId}/invoice": {
2883
+ parameters: {
2884
+ query?: never;
2885
+ header?: never;
2886
+ path?: never;
2887
+ cookie?: never;
2888
+ };
2889
+ /**
2890
+ * Get an order's invoice payload
2891
+ * @description Data, not a rendered document. `tax_lines` are the per-rate figures frozen at placement; an empty list with `tax_lines_available: false` means the order predates that write path, not that no tax was charged.
2892
+ */
2893
+ get: {
2894
+ parameters: {
2895
+ query?: never;
2896
+ header?: never;
2897
+ path: {
2898
+ /** @description Order id. */
2899
+ orderId: string;
2900
+ };
2901
+ cookie?: never;
2902
+ };
2903
+ requestBody?: never;
2904
+ responses: {
2905
+ /** @description Success */
2906
+ 200: {
2907
+ headers: {
2908
+ [name: string]: unknown;
2909
+ };
2910
+ content?: never;
2911
+ };
2912
+ /** @description Invalid request — unknown parameter or bad value. */
2913
+ 400: {
2914
+ headers: {
2915
+ [name: string]: unknown;
2916
+ };
2917
+ content: {
2918
+ "application/json": components["schemas"]["Error"];
2919
+ };
2920
+ };
2921
+ /** @description Missing or invalid customer credentials. */
2922
+ 401: {
2923
+ headers: {
2924
+ [name: string]: unknown;
2925
+ };
2926
+ content: {
2927
+ "application/json": components["schemas"]["Error"];
2928
+ };
2929
+ };
2930
+ /** @description Rate limit exceeded. */
2931
+ 429: {
2932
+ headers: {
2933
+ [name: string]: unknown;
2934
+ };
2935
+ content: {
2936
+ "application/json": components["schemas"]["Error"];
2937
+ };
2938
+ };
2939
+ };
2940
+ };
2941
+ put?: never;
2942
+ post?: never;
2943
+ delete?: never;
2944
+ options?: never;
2945
+ head?: never;
2946
+ patch?: never;
2947
+ trace?: never;
2948
+ };
2949
+ "/account/orders/{orderId}/returns": {
2950
+ parameters: {
2951
+ query?: never;
2952
+ header?: never;
2953
+ path?: never;
2954
+ cookie?: never;
2955
+ };
2956
+ get?: never;
2957
+ put?: never;
2958
+ /**
2959
+ * Request a return
2960
+ * @description Every requested line is checked against this order's own items and remaining returnable quantity.
2961
+ */
2962
+ post: {
2963
+ parameters: {
2964
+ query?: never;
2965
+ header?: never;
2966
+ path: {
2967
+ /** @description Order id. */
2968
+ orderId: string;
2969
+ };
2970
+ cookie?: never;
2971
+ };
2972
+ requestBody: {
2973
+ content: {
2974
+ "application/json": components["schemas"]["CreateReturnBody"];
2975
+ };
2976
+ };
2977
+ responses: {
2978
+ /** @description Success */
2979
+ 200: {
2980
+ headers: {
2981
+ [name: string]: unknown;
2982
+ };
2983
+ content: {
2984
+ "application/json": {
2985
+ data: components["schemas"]["Return"];
2986
+ };
2987
+ };
2988
+ };
2989
+ /** @description Invalid request — unknown parameter or bad value. */
2990
+ 400: {
2991
+ headers: {
2992
+ [name: string]: unknown;
2993
+ };
2994
+ content: {
2995
+ "application/json": components["schemas"]["Error"];
2996
+ };
2997
+ };
2998
+ /** @description Missing or invalid customer credentials. */
2999
+ 401: {
3000
+ headers: {
3001
+ [name: string]: unknown;
3002
+ };
3003
+ content: {
3004
+ "application/json": components["schemas"]["Error"];
3005
+ };
3006
+ };
3007
+ /** @description Rate limit exceeded. */
3008
+ 429: {
3009
+ headers: {
3010
+ [name: string]: unknown;
3011
+ };
3012
+ content: {
3013
+ "application/json": components["schemas"]["Error"];
3014
+ };
3015
+ };
3016
+ };
3017
+ };
3018
+ delete?: never;
3019
+ options?: never;
3020
+ head?: never;
3021
+ patch?: never;
3022
+ trace?: never;
3023
+ };
3024
+ "/account/returns": {
3025
+ parameters: {
3026
+ query?: never;
3027
+ header?: never;
3028
+ path?: never;
3029
+ cookie?: never;
3030
+ };
3031
+ /** List the customer's returns */
3032
+ get: {
3033
+ parameters: {
3034
+ query?: never;
3035
+ header?: never;
3036
+ path?: never;
3037
+ cookie?: never;
3038
+ };
3039
+ requestBody?: never;
3040
+ responses: {
3041
+ /** @description Success */
3042
+ 200: {
3043
+ headers: {
3044
+ [name: string]: unknown;
3045
+ };
3046
+ content: {
3047
+ "application/json": {
3048
+ data: components["schemas"]["Return"][];
3049
+ meta: components["schemas"]["PaginationMeta"];
3050
+ };
3051
+ };
3052
+ };
3053
+ /** @description Invalid request — unknown parameter or bad value. */
3054
+ 400: {
3055
+ headers: {
3056
+ [name: string]: unknown;
3057
+ };
3058
+ content: {
3059
+ "application/json": components["schemas"]["Error"];
3060
+ };
3061
+ };
3062
+ /** @description Missing or invalid customer credentials. */
3063
+ 401: {
3064
+ headers: {
3065
+ [name: string]: unknown;
3066
+ };
3067
+ content: {
3068
+ "application/json": components["schemas"]["Error"];
3069
+ };
3070
+ };
3071
+ /** @description Rate limit exceeded. */
3072
+ 429: {
3073
+ headers: {
3074
+ [name: string]: unknown;
3075
+ };
3076
+ content: {
3077
+ "application/json": components["schemas"]["Error"];
3078
+ };
3079
+ };
3080
+ };
3081
+ };
3082
+ put?: never;
3083
+ post?: never;
3084
+ delete?: never;
3085
+ options?: never;
3086
+ head?: never;
3087
+ patch?: never;
3088
+ trace?: never;
3089
+ };
3090
+ "/account/addresses/{addressId}/default": {
3091
+ parameters: {
3092
+ query?: never;
3093
+ header?: never;
3094
+ path?: never;
3095
+ cookie?: never;
3096
+ };
3097
+ get?: never;
3098
+ /** Set the default billing address */
3099
+ put: {
3100
+ parameters: {
3101
+ query?: never;
3102
+ header?: never;
3103
+ path: {
3104
+ /** @description Address id. */
3105
+ addressId: string;
3106
+ };
3107
+ cookie?: never;
3108
+ };
3109
+ requestBody?: never;
3110
+ responses: {
3111
+ /** @description Success */
3112
+ 200: {
3113
+ headers: {
3114
+ [name: string]: unknown;
3115
+ };
3116
+ content: {
3117
+ "application/json": {
3118
+ data: components["schemas"]["CustomerAddress"];
3119
+ };
3120
+ };
3121
+ };
3122
+ /** @description Invalid request — unknown parameter or bad value. */
3123
+ 400: {
3124
+ headers: {
3125
+ [name: string]: unknown;
3126
+ };
3127
+ content: {
3128
+ "application/json": components["schemas"]["Error"];
3129
+ };
3130
+ };
3131
+ /** @description Missing or invalid customer credentials. */
3132
+ 401: {
3133
+ headers: {
3134
+ [name: string]: unknown;
3135
+ };
3136
+ content: {
3137
+ "application/json": components["schemas"]["Error"];
3138
+ };
3139
+ };
3140
+ /** @description Rate limit exceeded. */
3141
+ 429: {
3142
+ headers: {
3143
+ [name: string]: unknown;
3144
+ };
3145
+ content: {
3146
+ "application/json": components["schemas"]["Error"];
3147
+ };
3148
+ };
3149
+ };
3150
+ };
3151
+ post?: never;
3152
+ delete?: never;
3153
+ options?: never;
3154
+ head?: never;
3155
+ patch?: never;
3156
+ trace?: never;
3157
+ };
3158
+ "/account/sessions": {
3159
+ parameters: {
3160
+ query?: never;
3161
+ header?: never;
3162
+ path?: never;
3163
+ cookie?: never;
3164
+ };
3165
+ /**
3166
+ * List active devices
3167
+ * @description `is_current` marks the session making this request.
3168
+ */
3169
+ get: {
3170
+ parameters: {
3171
+ query?: never;
3172
+ header?: never;
3173
+ path?: never;
3174
+ cookie?: never;
3175
+ };
3176
+ requestBody?: never;
3177
+ responses: {
3178
+ /** @description Success */
3179
+ 200: {
3180
+ headers: {
3181
+ [name: string]: unknown;
3182
+ };
3183
+ content: {
3184
+ "application/json": {
3185
+ data: components["schemas"]["Session"][];
3186
+ meta: components["schemas"]["PaginationMeta"];
3187
+ };
3188
+ };
3189
+ };
3190
+ /** @description Invalid request — unknown parameter or bad value. */
3191
+ 400: {
3192
+ headers: {
3193
+ [name: string]: unknown;
3194
+ };
3195
+ content: {
3196
+ "application/json": components["schemas"]["Error"];
3197
+ };
3198
+ };
3199
+ /** @description Missing or invalid customer credentials. */
3200
+ 401: {
3201
+ headers: {
3202
+ [name: string]: unknown;
3203
+ };
3204
+ content: {
3205
+ "application/json": components["schemas"]["Error"];
3206
+ };
3207
+ };
3208
+ /** @description Rate limit exceeded. */
3209
+ 429: {
3210
+ headers: {
3211
+ [name: string]: unknown;
3212
+ };
3213
+ content: {
3214
+ "application/json": components["schemas"]["Error"];
3215
+ };
3216
+ };
3217
+ };
3218
+ };
3219
+ put?: never;
3220
+ post?: never;
3221
+ delete?: never;
3222
+ options?: never;
3223
+ head?: never;
3224
+ patch?: never;
3225
+ trace?: never;
3226
+ };
3227
+ "/account/sessions/{sessionId}": {
3228
+ parameters: {
3229
+ query?: never;
3230
+ header?: never;
3231
+ path?: never;
3232
+ cookie?: never;
3233
+ };
3234
+ get?: never;
3235
+ put?: never;
3236
+ post?: never;
3237
+ /**
3238
+ * Revoke a device session
3239
+ * @description Revoking the current session logs the customer out.
3240
+ */
3241
+ delete: {
3242
+ parameters: {
3243
+ query?: never;
3244
+ header?: never;
3245
+ path: {
3246
+ /** @description Session id. */
3247
+ sessionId: string;
3248
+ };
3249
+ cookie?: never;
3250
+ };
3251
+ requestBody?: never;
3252
+ responses: {
3253
+ /** @description Success */
3254
+ 200: {
3255
+ headers: {
3256
+ [name: string]: unknown;
3257
+ };
3258
+ content?: never;
3259
+ };
3260
+ /** @description Invalid request — unknown parameter or bad value. */
3261
+ 400: {
3262
+ headers: {
3263
+ [name: string]: unknown;
3264
+ };
3265
+ content: {
3266
+ "application/json": components["schemas"]["Error"];
3267
+ };
3268
+ };
3269
+ /** @description Missing or invalid customer credentials. */
3270
+ 401: {
3271
+ headers: {
3272
+ [name: string]: unknown;
3273
+ };
3274
+ content: {
3275
+ "application/json": components["schemas"]["Error"];
3276
+ };
3277
+ };
3278
+ /** @description Rate limit exceeded. */
3279
+ 429: {
3280
+ headers: {
3281
+ [name: string]: unknown;
3282
+ };
3283
+ content: {
3284
+ "application/json": components["schemas"]["Error"];
3285
+ };
3286
+ };
3287
+ };
3288
+ };
3289
+ options?: never;
3290
+ head?: never;
3291
+ patch?: never;
3292
+ trace?: never;
3293
+ };
3294
+ "/account/reward-points": {
3295
+ parameters: {
3296
+ query?: never;
3297
+ header?: never;
3298
+ path?: never;
3299
+ cookie?: never;
3300
+ };
3301
+ /**
3302
+ * Get the reward-points balance
3303
+ * @description 404 when rewards are not enabled for the store.
3304
+ */
3305
+ get: {
3306
+ parameters: {
3307
+ query?: never;
3308
+ header?: never;
3309
+ path?: never;
3310
+ cookie?: never;
3311
+ };
3312
+ requestBody?: never;
3313
+ responses: {
3314
+ /** @description Success */
3315
+ 200: {
3316
+ headers: {
3317
+ [name: string]: unknown;
3318
+ };
3319
+ content: {
3320
+ "application/json": {
3321
+ data: components["schemas"]["RewardPoints"];
3322
+ };
3323
+ };
3324
+ };
3325
+ /** @description Invalid request — unknown parameter or bad value. */
3326
+ 400: {
3327
+ headers: {
3328
+ [name: string]: unknown;
3329
+ };
3330
+ content: {
3331
+ "application/json": components["schemas"]["Error"];
3332
+ };
3333
+ };
3334
+ /** @description Missing or invalid customer credentials. */
3335
+ 401: {
3336
+ headers: {
3337
+ [name: string]: unknown;
3338
+ };
3339
+ content: {
3340
+ "application/json": components["schemas"]["Error"];
3341
+ };
3342
+ };
3343
+ /** @description Rate limit exceeded. */
3344
+ 429: {
3345
+ headers: {
3346
+ [name: string]: unknown;
3347
+ };
3348
+ content: {
3349
+ "application/json": components["schemas"]["Error"];
3350
+ };
3351
+ };
3352
+ };
3353
+ };
3354
+ put?: never;
3355
+ post?: never;
3356
+ delete?: never;
3357
+ options?: never;
3358
+ head?: never;
3359
+ patch?: never;
3360
+ trace?: never;
3361
+ };
3362
+ "/orders/track": {
3363
+ parameters: {
3364
+ query?: never;
3365
+ header?: never;
3366
+ path?: never;
3367
+ cookie?: never;
3368
+ };
3369
+ /**
3370
+ * Track an order without signing in
3371
+ * @description Requires the order number and the matching email. Answers 404 identically whether the order is absent or the email does not match, so it cannot be used to test which addresses have ordered. Heavily rate limited, and the payload carries status only — no addresses, no totals.
3372
+ */
3373
+ get: {
3374
+ parameters: {
3375
+ query: {
3376
+ /** @description The order number shown on the confirmation. */
3377
+ display_id: number;
3378
+ /** @description The email the order was placed with. */
3379
+ email: string;
3380
+ };
3381
+ header?: never;
3382
+ path?: never;
3383
+ cookie?: never;
3384
+ };
3385
+ requestBody?: never;
3386
+ responses: {
3387
+ /** @description Success */
3388
+ 200: {
3389
+ headers: {
3390
+ [name: string]: unknown;
3391
+ };
3392
+ content: {
3393
+ "application/json": {
3394
+ data: components["schemas"]["OrderTracking"];
3395
+ };
3396
+ };
3397
+ };
3398
+ /** @description Invalid request — unknown parameter or bad value. */
3399
+ 400: {
3400
+ headers: {
3401
+ [name: string]: unknown;
3402
+ };
3403
+ content: {
3404
+ "application/json": components["schemas"]["Error"];
3405
+ };
3406
+ };
3407
+ /** @description Rate limit exceeded. */
3408
+ 429: {
3409
+ headers: {
3410
+ [name: string]: unknown;
3411
+ };
3412
+ content: {
3413
+ "application/json": components["schemas"]["Error"];
3414
+ };
3415
+ };
3416
+ };
3417
+ };
3418
+ put?: never;
3419
+ post?: never;
3420
+ delete?: never;
3421
+ options?: never;
3422
+ head?: never;
3423
+ patch?: never;
3424
+ trace?: never;
3425
+ };
3426
+ }
3427
+ export type webhooks = Record<string, never>;
3428
+ export interface components {
3429
+ schemas: {
3430
+ Error: {
3431
+ message: string;
3432
+ /** @description Present on validation failures. */
3433
+ errors?: {
3434
+ path: string;
3435
+ message: string;
3436
+ }[];
3437
+ };
3438
+ PaginationMeta: {
3439
+ /** @description Total matching rows. */
3440
+ count: number;
3441
+ page: number;
3442
+ limit: number;
3443
+ page_count: number;
3444
+ };
3445
+ ProductListItem: {
3446
+ id: string;
3447
+ title?: string | null;
3448
+ subtitle?: string | null;
3449
+ handle?: string | null;
3450
+ description?: string | null;
3451
+ excerpt?: string | null;
3452
+ thumbnail?: string | null;
3453
+ created_at?: string;
3454
+ updated_at?: string;
3455
+ };
3456
+ ProductVariant: {
3457
+ id: string;
3458
+ title: string;
3459
+ sku: string | null;
3460
+ rank: number | null;
3461
+ quantity: number;
3462
+ allow_backorder: boolean;
3463
+ manage_inventory: boolean;
3464
+ options: {
3465
+ id: string;
3466
+ value: string;
3467
+ option_id: string;
3468
+ option_title: string;
3469
+ }[];
3470
+ prices: components["schemas"]["VariantPrice"][];
3471
+ };
3472
+ VariantPrice: {
3473
+ currency_code: string;
3474
+ currency_symbol: string | null;
3475
+ amount: number;
3476
+ };
3477
+ ProductOption: {
3478
+ id: string;
3479
+ title: string;
3480
+ values: {
3481
+ id: string;
3482
+ value: string;
3483
+ }[];
3484
+ };
3485
+ ProductCategory: {
3486
+ id: string;
3487
+ name: string;
3488
+ handle: string;
3489
+ };
3490
+ ProductCollection: {
3491
+ id: string;
3492
+ title: string;
3493
+ handle: string | null;
3494
+ };
3495
+ Product: {
3496
+ id: string;
3497
+ title?: string | null;
3498
+ subtitle?: string | null;
3499
+ handle?: string | null;
3500
+ description?: string | null;
3501
+ excerpt?: string | null;
3502
+ thumbnail?: string | null;
3503
+ created_at?: string;
3504
+ updated_at?: string;
3505
+ variants?: components["schemas"]["ProductVariant"][];
3506
+ options?: components["schemas"]["ProductOption"][];
3507
+ categories?: components["schemas"]["ProductCategory"][];
3508
+ collection?: components["schemas"]["ProductCollection"] | null;
3509
+ };
3510
+ CategorySummary: {
3511
+ id: string;
3512
+ name: string;
3513
+ handle: string;
3514
+ };
3515
+ Category: {
3516
+ id: string;
3517
+ name?: string;
3518
+ handle?: string;
3519
+ description?: string | null;
3520
+ rank?: number;
3521
+ parent_id?: string | null;
3522
+ parent?: components["schemas"]["CategorySummary"] | null;
3523
+ children?: components["schemas"]["CategorySummary"][];
3524
+ };
3525
+ CategoryTreeNode: {
3526
+ id: string;
3527
+ name: string;
3528
+ handle: string;
3529
+ rank: number;
3530
+ children: components["schemas"]["CategoryTreeNode"][];
3531
+ };
3532
+ Collection: {
3533
+ id: string;
3534
+ title?: string;
3535
+ handle?: string | null;
3536
+ created_at?: string;
3537
+ updated_at?: string;
3538
+ products?: components["schemas"]["ProductListItem"][];
3539
+ products_has_more?: boolean;
3540
+ };
3541
+ Currency: {
3542
+ code: string;
3543
+ symbol: string;
3544
+ symbol_native: string;
3545
+ name: string;
3546
+ decimal_digits: number;
3547
+ };
3548
+ RegionSummary: {
3549
+ id: string;
3550
+ title: string;
3551
+ currency_code: string | null;
3552
+ };
3553
+ Store: {
3554
+ id: string;
3555
+ name: string;
3556
+ default_currency: components["schemas"]["Currency"] | null;
3557
+ currencies: components["schemas"]["Currency"][];
3558
+ default_region: components["schemas"]["RegionSummary"] | null;
3559
+ metadata: {
3560
+ [key: string]: unknown;
3561
+ };
3562
+ };
3563
+ Country: {
3564
+ iso_2: string;
3565
+ iso_3: string;
3566
+ name: string;
3567
+ display_name: string;
3568
+ };
3569
+ TaxRate: {
3570
+ id: string;
3571
+ name: string;
3572
+ code: string | null;
3573
+ rate: number;
3574
+ };
3575
+ Region: {
3576
+ id: string;
3577
+ title: string;
3578
+ currency_code: string | null;
3579
+ countries: components["schemas"]["Country"][];
3580
+ tax_rates?: components["schemas"]["TaxRate"][];
3581
+ };
3582
+ TaxSummary: {
3583
+ region_id: string | null;
3584
+ label: string | null;
3585
+ rate: number;
3586
+ configured: boolean;
3587
+ components: {
3588
+ tax_rate_id: string;
3589
+ name: string;
3590
+ code: string | null;
3591
+ rate: number;
3592
+ }[];
3593
+ };
3594
+ SalesChannel: {
3595
+ id: string;
3596
+ name: string;
3597
+ description: string | null;
3598
+ };
3599
+ PaymentMethod: {
3600
+ /** @description Stable provider id, e.g. `stripe`. */
3601
+ key: string;
3602
+ /** @description Display name for the payment step. */
3603
+ name: string;
3604
+ /** @description Client-side configuration for this provider — a publishable key, a display name, instructions. Shape varies by provider. */
3605
+ config: {
3606
+ [key: string]: unknown;
3607
+ };
3608
+ };
3609
+ CartAddress: {
3610
+ id: string;
3611
+ first_name: string | null;
3612
+ last_name: string | null;
3613
+ company: string | null;
3614
+ address_1: string | null;
3615
+ address_2: string | null;
3616
+ city: string | null;
3617
+ province: string | null;
3618
+ postal_code: string | null;
3619
+ phone: string | null;
3620
+ };
3621
+ LineItem: {
3622
+ id: string;
3623
+ title: string;
3624
+ description: string | null;
3625
+ thumbnail: string | null;
3626
+ unit_price: number;
3627
+ quantity: number;
3628
+ subtotal: number;
3629
+ product: {
3630
+ id: string;
3631
+ title: string;
3632
+ handle: string | null;
3633
+ } | null;
3634
+ variant: {
3635
+ id: string;
3636
+ title: string;
3637
+ } | null;
3638
+ };
3639
+ CartDiscount: {
3640
+ id: string;
3641
+ code: string;
3642
+ amount: number;
3643
+ };
3644
+ CartGiftCard: {
3645
+ id: string;
3646
+ code: string;
3647
+ balance: number;
3648
+ };
3649
+ CartTotals: {
3650
+ currency_code: string | null;
3651
+ subtotal: number;
3652
+ discount_total: number;
3653
+ taxable_base: number;
3654
+ tax_total: number;
3655
+ /** @description False when no tax rates are set up for the cart's region. A tax_total of 0 with this false means tax is unknown, not zero. */
3656
+ tax_configured: boolean;
3657
+ /** @description Always null: shipping is not modelled anywhere in this codebase, so no shipping cost can be quoted. Not a zero charge — an absent one. See docs/sales-terminology.md. */
3658
+ shipping_total: null;
3659
+ total: number;
3660
+ gift_card_total: number;
3661
+ amount_due: number;
3662
+ };
3663
+ Cart: {
3664
+ id: string;
3665
+ completed_at: string | null;
3666
+ created_at: string | null;
3667
+ region_id: string | null;
3668
+ customer: {
3669
+ id: string;
3670
+ email: string;
3671
+ first_name: string | null;
3672
+ last_name: string | null;
3673
+ } | null;
3674
+ shipping_address: components["schemas"]["CartAddress"] | null;
3675
+ billing_address: components["schemas"]["CartAddress"] | null;
3676
+ items: components["schemas"]["LineItem"][];
3677
+ discounts: components["schemas"]["CartDiscount"][];
3678
+ gift_cards: components["schemas"]["CartGiftCard"][];
3679
+ totals: components["schemas"]["CartTotals"];
3680
+ };
3681
+ Customer: {
3682
+ id: string;
3683
+ email: string;
3684
+ first_name: string | null;
3685
+ last_name: string | null;
3686
+ phone: string | null;
3687
+ };
3688
+ AuthSession: {
3689
+ customer: components["schemas"]["Customer"];
3690
+ token: string;
3691
+ expires_at: string;
3692
+ };
3693
+ OrderTotals: {
3694
+ currency_code: string | null;
3695
+ subtotal: number;
3696
+ discount_total: number;
3697
+ tax_total: number;
3698
+ tax_lines: components["schemas"]["OrderTaxLine"][];
3699
+ tax_lines_available: boolean;
3700
+ /** @description Always null: shipping is not modelled, so no shipping charge was ever recorded on this order. Not a zero charge — an absent one. */
3701
+ shipping_total: null;
3702
+ total: number;
3703
+ };
3704
+ OrderTaxLine: {
3705
+ name: string;
3706
+ rate: number;
3707
+ amount: number;
3708
+ };
3709
+ OrderItem: {
3710
+ id: string;
3711
+ title: string;
3712
+ description: string | null;
3713
+ thumbnail: string | null;
3714
+ unit_price: number;
3715
+ quantity: number;
3716
+ fulfilled_quantity: number;
3717
+ returned_quantity: number;
3718
+ subtotal: number;
3719
+ product: {
3720
+ id: string;
3721
+ title: string;
3722
+ handle: string | null;
3723
+ } | null;
3724
+ variant: {
3725
+ id: string;
3726
+ title: string;
3727
+ } | null;
3728
+ };
3729
+ CustomerAddress: {
3730
+ id: string;
3731
+ first_name: string | null;
3732
+ last_name: string | null;
3733
+ company: string | null;
3734
+ address_1: string | null;
3735
+ address_2: string | null;
3736
+ city: string | null;
3737
+ province: string | null;
3738
+ postal_code: string | null;
3739
+ country_code: string | null;
3740
+ phone: string | null;
3741
+ is_default_billing: boolean;
3742
+ };
3743
+ Return: {
3744
+ id: string;
3745
+ order_id: string;
3746
+ status: string;
3747
+ refund_amount: number;
3748
+ received_at: string | null;
3749
+ created_at: string | null;
3750
+ items: components["schemas"]["ReturnItem"][];
3751
+ };
3752
+ ReturnItem: {
3753
+ item_id: string;
3754
+ quantity: number;
3755
+ received_quantity: number;
3756
+ };
3757
+ Order: {
3758
+ id: string;
3759
+ display_id: number | null;
3760
+ status: string;
3761
+ fulfillment_status: string | null;
3762
+ payment_status: string | null;
3763
+ created_at: string | null;
3764
+ total?: number;
3765
+ currency_code?: string | null;
3766
+ totals: components["schemas"]["OrderTotals"];
3767
+ items?: components["schemas"]["OrderItem"][];
3768
+ shipping_address?: components["schemas"]["CustomerAddress"] | null;
3769
+ returns?: components["schemas"]["Return"][];
3770
+ };
3771
+ OrderListItem: {
3772
+ id: string;
3773
+ display_id: number | null;
3774
+ status: string;
3775
+ fulfillment_status: string | null;
3776
+ payment_status: string | null;
3777
+ created_at: string | null;
3778
+ total?: number;
3779
+ currency_code?: string | null;
3780
+ };
3781
+ OrderTracking: {
3782
+ display_id: number | null;
3783
+ status: string;
3784
+ fulfillment_status: string | null;
3785
+ created_at: string | null;
3786
+ };
3787
+ Session: {
3788
+ id: string;
3789
+ browser: string | null;
3790
+ os: string | null;
3791
+ ip_address: string | null;
3792
+ location: string | null;
3793
+ country: string | null;
3794
+ last_seen_at: string | null;
3795
+ created_at: string | null;
3796
+ expires_at: string | null;
3797
+ is_current: boolean;
3798
+ };
3799
+ RewardPoints: {
3800
+ balance: number;
3801
+ point_value: number;
3802
+ min_redemption_threshold: number;
3803
+ };
3804
+ RegisterBody: {
3805
+ /** Format: email */
3806
+ email: string;
3807
+ password: string & (unknown & unknown & unknown & unknown);
3808
+ first_name?: string;
3809
+ last_name?: string;
3810
+ phone?: string;
3811
+ turnstile_token?: string;
3812
+ };
3813
+ LoginBody: {
3814
+ /** Format: email */
3815
+ email: string;
3816
+ password: string;
3817
+ turnstile_token?: string;
3818
+ };
3819
+ AddCartItemBody: {
3820
+ product_id: string;
3821
+ variant_id?: string | null;
3822
+ quantity: number;
3823
+ metadata?: {
3824
+ [key: string]: unknown;
3825
+ };
3826
+ };
3827
+ UpdateCartItemBody: {
3828
+ quantity?: number;
3829
+ metadata?: {
3830
+ [key: string]: unknown;
3831
+ };
3832
+ };
3833
+ SetCartCustomerBody: {
3834
+ /** Format: email */
3835
+ email: string;
3836
+ first_name?: string;
3837
+ last_name?: string;
3838
+ };
3839
+ CartAddressBody: {
3840
+ first_name?: string;
3841
+ last_name?: string;
3842
+ company?: string;
3843
+ address_1?: string;
3844
+ address_2?: string;
3845
+ city?: string;
3846
+ province?: string;
3847
+ postal_code?: string;
3848
+ phone?: string;
3849
+ country_code?: string;
3850
+ metadata?: {
3851
+ [key: string]: unknown;
3852
+ };
3853
+ };
3854
+ SetCartRegionBody: {
3855
+ region_id: string;
3856
+ };
3857
+ CartCodeBody: {
3858
+ code: string;
3859
+ };
3860
+ CreateReturnBody: {
3861
+ items: {
3862
+ item_id: string;
3863
+ quantity: number;
3864
+ reason_id?: string;
3865
+ }[];
3866
+ note?: string;
3867
+ };
3868
+ };
3869
+ responses: never;
3870
+ parameters: never;
3871
+ requestBodies: never;
3872
+ headers: never;
3873
+ pathItems: never;
3874
+ }
3875
+ export type $defs = Record<string, never>;
3876
+ export type operations = Record<string, never>;