@redotech/redo-api-schema 2.2.427 → 2.2.432
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/openapi.d.ts +358 -0
- package/lib/openapi.yaml +470 -0
- package/package.json +1 -1
package/lib/openapi.d.ts
CHANGED
|
@@ -184,6 +184,31 @@ export interface paths {
|
|
|
184
184
|
*/
|
|
185
185
|
get: operations["Invoice list"];
|
|
186
186
|
};
|
|
187
|
+
"/stores/{storeId}/products/bulk-upload": {
|
|
188
|
+
/**
|
|
189
|
+
* Bulk upload products (Beta)
|
|
190
|
+
* @description Bulk create or update product families and their variants.
|
|
191
|
+
*
|
|
192
|
+
* Submit up to 1,000 product families per request, each containing up to 100 variants.
|
|
193
|
+
* Products are processed asynchronously in batches. Only one bulk upload can run per store at a time.
|
|
194
|
+
*
|
|
195
|
+
* ## Matching Strategy
|
|
196
|
+
*
|
|
197
|
+
* The API uses the following priority to match incoming product families to existing records:
|
|
198
|
+
*
|
|
199
|
+
* 1. **`product_family_id`** — Redo product family ID (direct lookup)
|
|
200
|
+
* 2. **`external_id`** — ID from your external system
|
|
201
|
+
* 3. **SKU** — Matched via variant SKUs
|
|
202
|
+
*
|
|
203
|
+
* If no match is found, a new product family is created.
|
|
204
|
+
*
|
|
205
|
+
* ## Concurrency
|
|
206
|
+
*
|
|
207
|
+
* Only one bulk upload operation can run per store at a time. If a bulk upload is already
|
|
208
|
+
* in progress, the request will return a `409 Conflict` error.
|
|
209
|
+
*/
|
|
210
|
+
post: operations["Products bulk upload"];
|
|
211
|
+
};
|
|
187
212
|
"/stores/{storeId}/returns": {
|
|
188
213
|
/**
|
|
189
214
|
* List Returns
|
|
@@ -302,6 +327,279 @@ export interface components {
|
|
|
302
327
|
*/
|
|
303
328
|
state: string;
|
|
304
329
|
};
|
|
330
|
+
/**
|
|
331
|
+
* Product Family Image
|
|
332
|
+
* @description An image associated with a product family or variant.
|
|
333
|
+
*/
|
|
334
|
+
"bulk-product-family-image.schema": {
|
|
335
|
+
/**
|
|
336
|
+
* Alt Text
|
|
337
|
+
* @description Alt text for the image.
|
|
338
|
+
*/
|
|
339
|
+
alt_text: string;
|
|
340
|
+
/**
|
|
341
|
+
* URL
|
|
342
|
+
* Format: uri
|
|
343
|
+
* @description URL of the image.
|
|
344
|
+
*/
|
|
345
|
+
url: string;
|
|
346
|
+
};
|
|
347
|
+
/**
|
|
348
|
+
* Product Family Option
|
|
349
|
+
* @description A product option (e.g. Size, Color) with its possible values.
|
|
350
|
+
*/
|
|
351
|
+
"bulk-product-family-option.schema": {
|
|
352
|
+
/**
|
|
353
|
+
* Name
|
|
354
|
+
* @description Option name (e.g. "Size", "Color").
|
|
355
|
+
*/
|
|
356
|
+
name: string;
|
|
357
|
+
/**
|
|
358
|
+
* Values
|
|
359
|
+
* @description Possible values for this option (e.g. ["Small", "Medium", "Large"]).
|
|
360
|
+
*/
|
|
361
|
+
values: string[];
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* Bulk Product Family
|
|
365
|
+
* @description A product family containing one or more variants.
|
|
366
|
+
*
|
|
367
|
+
* Matching priority for existing product families:
|
|
368
|
+
* 1. `product_family_id` — Redo product family ID (direct lookup)
|
|
369
|
+
* 2. `external_id` — ID from your external system
|
|
370
|
+
* 3. SKU — Matched via variant SKUs
|
|
371
|
+
* If no match is found, a new product family is created.
|
|
372
|
+
*/
|
|
373
|
+
"bulk-product-family.schema": {
|
|
374
|
+
/**
|
|
375
|
+
* Description
|
|
376
|
+
* @description Product family description.
|
|
377
|
+
*/
|
|
378
|
+
description?: string;
|
|
379
|
+
/**
|
|
380
|
+
* External ID
|
|
381
|
+
* @description Product family ID in your external system. Second-priority match.
|
|
382
|
+
*/
|
|
383
|
+
external_id?: string;
|
|
384
|
+
/**
|
|
385
|
+
* Images
|
|
386
|
+
* @description Images for the product family.
|
|
387
|
+
*/
|
|
388
|
+
images?: components["schemas"]["bulk-product-family-image.schema"][];
|
|
389
|
+
/**
|
|
390
|
+
* Kind
|
|
391
|
+
* @description Whether the product is sellable or non-sellable.
|
|
392
|
+
* @default SELLABLE
|
|
393
|
+
* @enum {string}
|
|
394
|
+
*/
|
|
395
|
+
kind?: "SELLABLE" | "NON_SELLABLE";
|
|
396
|
+
/**
|
|
397
|
+
* Options
|
|
398
|
+
* @description Product options (e.g. Size, Color) with their possible values.
|
|
399
|
+
*/
|
|
400
|
+
options?: components["schemas"]["bulk-product-family-option.schema"][];
|
|
401
|
+
/**
|
|
402
|
+
* Product Family ID
|
|
403
|
+
* @description Redo product family ID. Highest-priority match for updating an existing product family.
|
|
404
|
+
*/
|
|
405
|
+
product_family_id?: string;
|
|
406
|
+
/**
|
|
407
|
+
* Tags
|
|
408
|
+
* @description Tags for categorization.
|
|
409
|
+
* @default []
|
|
410
|
+
*/
|
|
411
|
+
tags?: string[];
|
|
412
|
+
/**
|
|
413
|
+
* Title
|
|
414
|
+
* @description Product family title.
|
|
415
|
+
*/
|
|
416
|
+
title: string;
|
|
417
|
+
/**
|
|
418
|
+
* Variants
|
|
419
|
+
* @description Product variants. At least 1 and up to 100 per product family.
|
|
420
|
+
*/
|
|
421
|
+
variants: components["schemas"]["bulk-variant.schema"][];
|
|
422
|
+
/**
|
|
423
|
+
* Vendor
|
|
424
|
+
* @description Vendor or manufacturer name.
|
|
425
|
+
*/
|
|
426
|
+
vendor?: string;
|
|
427
|
+
};
|
|
428
|
+
/**
|
|
429
|
+
* Bulk Product Upload Request
|
|
430
|
+
* @description Request body for bulk uploading product families and their variants.
|
|
431
|
+
*/
|
|
432
|
+
"bulk-product-upload-request.schema": {
|
|
433
|
+
/**
|
|
434
|
+
* Products
|
|
435
|
+
* @description Product families to create or update. Between 1 and 1000 per request.
|
|
436
|
+
*/
|
|
437
|
+
products: components["schemas"]["bulk-product-family.schema"][];
|
|
438
|
+
};
|
|
439
|
+
/**
|
|
440
|
+
* Bulk Product Upload Response
|
|
441
|
+
* @description Response from a bulk product upload operation.
|
|
442
|
+
*/
|
|
443
|
+
"bulk-product-upload-response.schema": {
|
|
444
|
+
/**
|
|
445
|
+
* Error Count
|
|
446
|
+
* @description Number of product families that failed to process.
|
|
447
|
+
*/
|
|
448
|
+
error_count: number;
|
|
449
|
+
/**
|
|
450
|
+
* Processed Count
|
|
451
|
+
* @description Number of product families processed successfully.
|
|
452
|
+
*/
|
|
453
|
+
processed_count: number;
|
|
454
|
+
/**
|
|
455
|
+
* Results
|
|
456
|
+
* @description Per-product-family results.
|
|
457
|
+
*/
|
|
458
|
+
results: (OneOf<[{
|
|
459
|
+
/**
|
|
460
|
+
* Product Family ID
|
|
461
|
+
* @description Redo product family ID.
|
|
462
|
+
*/
|
|
463
|
+
product_family_id: string;
|
|
464
|
+
/**
|
|
465
|
+
* Products
|
|
466
|
+
* @description Variant results within this product family.
|
|
467
|
+
*/
|
|
468
|
+
products: {
|
|
469
|
+
/**
|
|
470
|
+
* ID
|
|
471
|
+
* @description Redo product ID.
|
|
472
|
+
*/
|
|
473
|
+
id: string;
|
|
474
|
+
/**
|
|
475
|
+
* SKU
|
|
476
|
+
* @description Product SKU.
|
|
477
|
+
*/
|
|
478
|
+
sku: string;
|
|
479
|
+
}[];
|
|
480
|
+
/**
|
|
481
|
+
* Status
|
|
482
|
+
* @description Whether the product family was created or updated.
|
|
483
|
+
* @enum {string}
|
|
484
|
+
*/
|
|
485
|
+
status: "created" | "updated";
|
|
486
|
+
}, {
|
|
487
|
+
/**
|
|
488
|
+
* Error
|
|
489
|
+
* @description Error message describing what went wrong.
|
|
490
|
+
*/
|
|
491
|
+
error: string;
|
|
492
|
+
/**
|
|
493
|
+
* Status
|
|
494
|
+
* @description Indicates an error occurred.
|
|
495
|
+
* @constant
|
|
496
|
+
*/
|
|
497
|
+
status: "error";
|
|
498
|
+
}]>)[];
|
|
499
|
+
/**
|
|
500
|
+
* Total Count
|
|
501
|
+
* @description Total number of product families in the request.
|
|
502
|
+
*/
|
|
503
|
+
total_count: number;
|
|
504
|
+
};
|
|
505
|
+
/**
|
|
506
|
+
* Bulk Variant
|
|
507
|
+
* @description A product variant within a product family.
|
|
508
|
+
*/
|
|
509
|
+
"bulk-variant.schema": {
|
|
510
|
+
/**
|
|
511
|
+
* Barcodes
|
|
512
|
+
* @description Additional barcodes for this variant.
|
|
513
|
+
*/
|
|
514
|
+
barcodes?: string[];
|
|
515
|
+
/**
|
|
516
|
+
* Currency
|
|
517
|
+
* @description Currency code (e.g. "USD").
|
|
518
|
+
*/
|
|
519
|
+
currency: string;
|
|
520
|
+
/**
|
|
521
|
+
* Dimension Unit
|
|
522
|
+
* @description Unit of dimension measurement.
|
|
523
|
+
* @enum {string}
|
|
524
|
+
*/
|
|
525
|
+
dimension_unit?: "in" | "cm";
|
|
526
|
+
/**
|
|
527
|
+
* External ID
|
|
528
|
+
* @description Variant ID in your external system. Used for matching if `id` is not provided.
|
|
529
|
+
*/
|
|
530
|
+
external_id?: string;
|
|
531
|
+
/**
|
|
532
|
+
* Height
|
|
533
|
+
* @description Height of the variant.
|
|
534
|
+
*/
|
|
535
|
+
height?: number;
|
|
536
|
+
/**
|
|
537
|
+
* HS Code
|
|
538
|
+
* @description Harmonized System code for customs.
|
|
539
|
+
*/
|
|
540
|
+
hs_code?: string;
|
|
541
|
+
/**
|
|
542
|
+
* ID
|
|
543
|
+
* @description Redo variant ID. Used for matching to an existing variant.
|
|
544
|
+
*/
|
|
545
|
+
id?: string;
|
|
546
|
+
/**
|
|
547
|
+
* Images
|
|
548
|
+
* @description Images specific to this variant.
|
|
549
|
+
*/
|
|
550
|
+
images?: components["schemas"]["bulk-product-family-image.schema"][];
|
|
551
|
+
/**
|
|
552
|
+
* Length
|
|
553
|
+
* @description Length of the variant.
|
|
554
|
+
*/
|
|
555
|
+
length?: number;
|
|
556
|
+
/**
|
|
557
|
+
* Option Values
|
|
558
|
+
* @description Values for each option defined on the product family, in the same order.
|
|
559
|
+
*/
|
|
560
|
+
option_values?: string[];
|
|
561
|
+
/**
|
|
562
|
+
* Origin Country
|
|
563
|
+
* @description Country of origin as an ISO 3166-1 alpha-2 code (e.g. "US").
|
|
564
|
+
*/
|
|
565
|
+
origin_country?: string;
|
|
566
|
+
/**
|
|
567
|
+
* Price
|
|
568
|
+
* @description Price in the smallest currency unit (e.g. cents for USD).
|
|
569
|
+
*/
|
|
570
|
+
price: number;
|
|
571
|
+
/**
|
|
572
|
+
* SKU
|
|
573
|
+
* @description Stock keeping unit. Required. Used for matching if neither `id` nor `external_id` are provided.
|
|
574
|
+
*/
|
|
575
|
+
sku: string;
|
|
576
|
+
/**
|
|
577
|
+
* Title
|
|
578
|
+
* @description Variant title (e.g. "Small / Blue").
|
|
579
|
+
*/
|
|
580
|
+
title?: string;
|
|
581
|
+
/**
|
|
582
|
+
* UPC
|
|
583
|
+
* @description Universal product code.
|
|
584
|
+
*/
|
|
585
|
+
upc?: string;
|
|
586
|
+
/**
|
|
587
|
+
* Weight
|
|
588
|
+
* @description Weight of the variant.
|
|
589
|
+
*/
|
|
590
|
+
weight?: number;
|
|
591
|
+
/**
|
|
592
|
+
* Weight Unit
|
|
593
|
+
* @description Unit of weight measurement.
|
|
594
|
+
* @enum {string}
|
|
595
|
+
*/
|
|
596
|
+
weight_unit?: "g" | "kg" | "lb" | "oz" | "t";
|
|
597
|
+
/**
|
|
598
|
+
* Width
|
|
599
|
+
* @description Width of the variant.
|
|
600
|
+
*/
|
|
601
|
+
width?: number;
|
|
602
|
+
};
|
|
305
603
|
/**
|
|
306
604
|
* Comment
|
|
307
605
|
* @description Comment with either message or image.
|
|
@@ -2347,6 +2645,66 @@ export interface operations {
|
|
|
2347
2645
|
};
|
|
2348
2646
|
};
|
|
2349
2647
|
};
|
|
2648
|
+
/**
|
|
2649
|
+
* Bulk upload products (Beta)
|
|
2650
|
+
* @description Bulk create or update product families and their variants.
|
|
2651
|
+
*
|
|
2652
|
+
* Submit up to 1,000 product families per request, each containing up to 100 variants.
|
|
2653
|
+
* Products are processed asynchronously in batches. Only one bulk upload can run per store at a time.
|
|
2654
|
+
*
|
|
2655
|
+
* ## Matching Strategy
|
|
2656
|
+
*
|
|
2657
|
+
* The API uses the following priority to match incoming product families to existing records:
|
|
2658
|
+
*
|
|
2659
|
+
* 1. **`product_family_id`** — Redo product family ID (direct lookup)
|
|
2660
|
+
* 2. **`external_id`** — ID from your external system
|
|
2661
|
+
* 3. **SKU** — Matched via variant SKUs
|
|
2662
|
+
*
|
|
2663
|
+
* If no match is found, a new product family is created.
|
|
2664
|
+
*
|
|
2665
|
+
* ## Concurrency
|
|
2666
|
+
*
|
|
2667
|
+
* Only one bulk upload operation can run per store at a time. If a bulk upload is already
|
|
2668
|
+
* in progress, the request will return a `409 Conflict` error.
|
|
2669
|
+
*/
|
|
2670
|
+
"Products bulk upload": {
|
|
2671
|
+
parameters: {
|
|
2672
|
+
path: {
|
|
2673
|
+
storeId: components["parameters"]["store-id.param"];
|
|
2674
|
+
};
|
|
2675
|
+
};
|
|
2676
|
+
requestBody: {
|
|
2677
|
+
content: {
|
|
2678
|
+
"application/json": components["schemas"]["bulk-product-upload-request.schema"];
|
|
2679
|
+
};
|
|
2680
|
+
};
|
|
2681
|
+
responses: {
|
|
2682
|
+
/** @description Upload completed */
|
|
2683
|
+
200: {
|
|
2684
|
+
content: {
|
|
2685
|
+
"application/json": components["schemas"]["bulk-product-upload-response.schema"];
|
|
2686
|
+
};
|
|
2687
|
+
};
|
|
2688
|
+
/** @description Invalid request body or missing required fields */
|
|
2689
|
+
400: {
|
|
2690
|
+
content: {
|
|
2691
|
+
"application/json": components["schemas"]["error.schema"];
|
|
2692
|
+
};
|
|
2693
|
+
};
|
|
2694
|
+
/** @description A bulk upload is already in progress for this store */
|
|
2695
|
+
409: {
|
|
2696
|
+
content: {
|
|
2697
|
+
"application/json": components["schemas"]["error.schema"];
|
|
2698
|
+
};
|
|
2699
|
+
};
|
|
2700
|
+
/** @description Error */
|
|
2701
|
+
default: {
|
|
2702
|
+
content: {
|
|
2703
|
+
"application/problem+json": components["schemas"]["error.schema"];
|
|
2704
|
+
};
|
|
2705
|
+
};
|
|
2706
|
+
};
|
|
2707
|
+
};
|
|
2350
2708
|
/**
|
|
2351
2709
|
* List Returns
|
|
2352
2710
|
* @description List returns, sorted by most recent to least recent.
|
package/lib/openapi.yaml
CHANGED
|
@@ -45,6 +45,7 @@ tags:
|
|
|
45
45
|
- name: Customers
|
|
46
46
|
- name: Invoices
|
|
47
47
|
- name: Merchant Admin
|
|
48
|
+
- name: Products
|
|
48
49
|
- name: Returns
|
|
49
50
|
- name: Storefront
|
|
50
51
|
- name: Webhooks
|
|
@@ -619,6 +620,156 @@ paths:
|
|
|
619
620
|
tags:
|
|
620
621
|
- Merchant Admin
|
|
621
622
|
summary: Merchant admin
|
|
623
|
+
/stores/{storeId}/products/bulk-upload:
|
|
624
|
+
post:
|
|
625
|
+
description: |
|
|
626
|
+
Bulk create or update product families and their variants.
|
|
627
|
+
|
|
628
|
+
Submit up to 1,000 product families per request, each containing up to 100 variants.
|
|
629
|
+
Products are processed asynchronously in batches. Only one bulk upload can run per store at a time.
|
|
630
|
+
|
|
631
|
+
## Matching Strategy
|
|
632
|
+
|
|
633
|
+
The API uses the following priority to match incoming product families to existing records:
|
|
634
|
+
|
|
635
|
+
1. **`product_family_id`** — Redo product family ID (direct lookup)
|
|
636
|
+
2. **`external_id`** — ID from your external system
|
|
637
|
+
3. **SKU** — Matched via variant SKUs
|
|
638
|
+
|
|
639
|
+
If no match is found, a new product family is created.
|
|
640
|
+
|
|
641
|
+
## Concurrency
|
|
642
|
+
|
|
643
|
+
Only one bulk upload operation can run per store at a time. If a bulk upload is already
|
|
644
|
+
in progress, the request will return a `409 Conflict` error.
|
|
645
|
+
operationId: Products bulk upload
|
|
646
|
+
parameters:
|
|
647
|
+
- $ref: '#/components/parameters/store-id.param'
|
|
648
|
+
requestBody:
|
|
649
|
+
content:
|
|
650
|
+
application/json:
|
|
651
|
+
schema:
|
|
652
|
+
$ref: '#/components/schemas/bulk-product-upload-request.schema'
|
|
653
|
+
examples:
|
|
654
|
+
single_product:
|
|
655
|
+
summary: Single product with one variant
|
|
656
|
+
value:
|
|
657
|
+
products:
|
|
658
|
+
- title: Classic T-Shirt
|
|
659
|
+
description: A comfortable cotton t-shirt
|
|
660
|
+
vendor: Acme Apparel
|
|
661
|
+
tags:
|
|
662
|
+
- apparel
|
|
663
|
+
- basics
|
|
664
|
+
kind: SELLABLE
|
|
665
|
+
variants:
|
|
666
|
+
- sku: TSHIRT-BLK-M
|
|
667
|
+
price: 2999
|
|
668
|
+
currency: USD
|
|
669
|
+
weight: 200
|
|
670
|
+
weight_unit: g
|
|
671
|
+
multiple_products_with_options:
|
|
672
|
+
summary: Multiple products with options and images
|
|
673
|
+
value:
|
|
674
|
+
products:
|
|
675
|
+
- title: Running Shoes
|
|
676
|
+
external_id: EXT-SHOES-001
|
|
677
|
+
options:
|
|
678
|
+
- name: Size
|
|
679
|
+
values:
|
|
680
|
+
- '9'
|
|
681
|
+
- '10'
|
|
682
|
+
- '11'
|
|
683
|
+
- name: Color
|
|
684
|
+
values:
|
|
685
|
+
- Black
|
|
686
|
+
- White
|
|
687
|
+
images:
|
|
688
|
+
- url: https://example.com/shoes-main.jpg
|
|
689
|
+
alt_text: Running shoes front view
|
|
690
|
+
variants:
|
|
691
|
+
- sku: SHOE-BLK-9
|
|
692
|
+
price: 12999
|
|
693
|
+
currency: USD
|
|
694
|
+
option_values:
|
|
695
|
+
- '9'
|
|
696
|
+
- Black
|
|
697
|
+
- sku: SHOE-WHT-10
|
|
698
|
+
price: 12999
|
|
699
|
+
currency: USD
|
|
700
|
+
option_values:
|
|
701
|
+
- '10'
|
|
702
|
+
- White
|
|
703
|
+
- title: Athletic Socks
|
|
704
|
+
variants:
|
|
705
|
+
- sku: SOCK-WHT-L
|
|
706
|
+
price: 1499
|
|
707
|
+
currency: USD
|
|
708
|
+
required: true
|
|
709
|
+
responses:
|
|
710
|
+
'200':
|
|
711
|
+
content:
|
|
712
|
+
application/json:
|
|
713
|
+
schema:
|
|
714
|
+
$ref: '#/components/schemas/bulk-product-upload-response.schema'
|
|
715
|
+
examples:
|
|
716
|
+
success:
|
|
717
|
+
summary: Successful upload
|
|
718
|
+
value:
|
|
719
|
+
total_count: 2
|
|
720
|
+
processed_count: 2
|
|
721
|
+
error_count: 0
|
|
722
|
+
results:
|
|
723
|
+
- status: created
|
|
724
|
+
product_family_id: 01H5K3EXAMPLE1
|
|
725
|
+
products:
|
|
726
|
+
- id: 01H5K3EXAMPLE1A
|
|
727
|
+
sku: SHOE-BLK-9
|
|
728
|
+
- id: 01H5K3EXAMPLE1B
|
|
729
|
+
sku: SHOE-WHT-10
|
|
730
|
+
- status: updated
|
|
731
|
+
product_family_id: 01H5K3EXAMPLE2
|
|
732
|
+
products:
|
|
733
|
+
- id: 01H5K3EXAMPLE2A
|
|
734
|
+
sku: SOCK-WHT-L
|
|
735
|
+
partial_failure:
|
|
736
|
+
summary: Partial failure
|
|
737
|
+
value:
|
|
738
|
+
total_count: 2
|
|
739
|
+
processed_count: 1
|
|
740
|
+
error_count: 1
|
|
741
|
+
results:
|
|
742
|
+
- status: created
|
|
743
|
+
product_family_id: 01H5K3EXAMPLE3
|
|
744
|
+
products:
|
|
745
|
+
- id: 01H5K3EXAMPLE3A
|
|
746
|
+
sku: TSHIRT-BLK-M
|
|
747
|
+
- status: error
|
|
748
|
+
error: Duplicate SKU found in request
|
|
749
|
+
description: Upload completed
|
|
750
|
+
'400':
|
|
751
|
+
content:
|
|
752
|
+
application/json:
|
|
753
|
+
schema:
|
|
754
|
+
$ref: '#/components/schemas/error.schema'
|
|
755
|
+
description: Invalid request body or missing required fields
|
|
756
|
+
'409':
|
|
757
|
+
content:
|
|
758
|
+
application/json:
|
|
759
|
+
schema:
|
|
760
|
+
$ref: '#/components/schemas/error.schema'
|
|
761
|
+
description: A bulk upload is already in progress for this store
|
|
762
|
+
default:
|
|
763
|
+
content:
|
|
764
|
+
application/problem+json:
|
|
765
|
+
schema:
|
|
766
|
+
$ref: '#/components/schemas/error.schema'
|
|
767
|
+
description: Error
|
|
768
|
+
security:
|
|
769
|
+
- Bearer: []
|
|
770
|
+
summary: Bulk upload products (Beta)
|
|
771
|
+
tags:
|
|
772
|
+
- Products
|
|
622
773
|
/returns/{returnId}:
|
|
623
774
|
description: Return.
|
|
624
775
|
get:
|
|
@@ -1917,6 +2068,325 @@ components:
|
|
|
1917
2068
|
- createdAt
|
|
1918
2069
|
- charge
|
|
1919
2070
|
type: object
|
|
2071
|
+
bulk-product-family-option.schema:
|
|
2072
|
+
description: A product option (e.g. Size, Color) with its possible values.
|
|
2073
|
+
properties:
|
|
2074
|
+
name:
|
|
2075
|
+
description: Option name (e.g. "Size", "Color").
|
|
2076
|
+
maxLength: 255
|
|
2077
|
+
title: Name
|
|
2078
|
+
type: string
|
|
2079
|
+
values:
|
|
2080
|
+
description: Possible values for this option (e.g. ["Small", "Medium", "Large"]).
|
|
2081
|
+
items:
|
|
2082
|
+
maxLength: 255
|
|
2083
|
+
type: string
|
|
2084
|
+
title: Values
|
|
2085
|
+
type: array
|
|
2086
|
+
required:
|
|
2087
|
+
- name
|
|
2088
|
+
- values
|
|
2089
|
+
title: Product Family Option
|
|
2090
|
+
type: object
|
|
2091
|
+
bulk-product-family-image.schema:
|
|
2092
|
+
description: An image associated with a product family or variant.
|
|
2093
|
+
properties:
|
|
2094
|
+
url:
|
|
2095
|
+
description: URL of the image.
|
|
2096
|
+
format: uri
|
|
2097
|
+
title: URL
|
|
2098
|
+
type: string
|
|
2099
|
+
alt_text:
|
|
2100
|
+
description: Alt text for the image.
|
|
2101
|
+
maxLength: 1000
|
|
2102
|
+
title: Alt Text
|
|
2103
|
+
type: string
|
|
2104
|
+
required:
|
|
2105
|
+
- url
|
|
2106
|
+
- alt_text
|
|
2107
|
+
title: Product Family Image
|
|
2108
|
+
type: object
|
|
2109
|
+
bulk-variant.schema:
|
|
2110
|
+
description: A product variant within a product family.
|
|
2111
|
+
properties:
|
|
2112
|
+
id:
|
|
2113
|
+
description: Redo variant ID. Used for matching to an existing variant.
|
|
2114
|
+
maxLength: 255
|
|
2115
|
+
title: ID
|
|
2116
|
+
type: string
|
|
2117
|
+
external_id:
|
|
2118
|
+
description: Variant ID in your external system. Used for matching if `id` is not provided.
|
|
2119
|
+
maxLength: 255
|
|
2120
|
+
title: External ID
|
|
2121
|
+
type: string
|
|
2122
|
+
title:
|
|
2123
|
+
description: Variant title (e.g. "Small / Blue").
|
|
2124
|
+
maxLength: 500
|
|
2125
|
+
title: Title
|
|
2126
|
+
type: string
|
|
2127
|
+
sku:
|
|
2128
|
+
description: Stock keeping unit. Required. Used for matching if neither `id` nor `external_id` are provided.
|
|
2129
|
+
maxLength: 255
|
|
2130
|
+
minLength: 1
|
|
2131
|
+
title: SKU
|
|
2132
|
+
type: string
|
|
2133
|
+
upc:
|
|
2134
|
+
description: Universal product code.
|
|
2135
|
+
maxLength: 50
|
|
2136
|
+
title: UPC
|
|
2137
|
+
type: string
|
|
2138
|
+
barcodes:
|
|
2139
|
+
description: Additional barcodes for this variant.
|
|
2140
|
+
items:
|
|
2141
|
+
maxLength: 255
|
|
2142
|
+
type: string
|
|
2143
|
+
title: Barcodes
|
|
2144
|
+
type: array
|
|
2145
|
+
price:
|
|
2146
|
+
description: Price in the smallest currency unit (e.g. cents for USD).
|
|
2147
|
+
minimum: 0
|
|
2148
|
+
title: Price
|
|
2149
|
+
type: integer
|
|
2150
|
+
currency:
|
|
2151
|
+
description: Currency code (e.g. "USD").
|
|
2152
|
+
maxLength: 10
|
|
2153
|
+
title: Currency
|
|
2154
|
+
type: string
|
|
2155
|
+
weight:
|
|
2156
|
+
description: Weight of the variant.
|
|
2157
|
+
title: Weight
|
|
2158
|
+
type: number
|
|
2159
|
+
weight_unit:
|
|
2160
|
+
description: Unit of weight measurement.
|
|
2161
|
+
enum:
|
|
2162
|
+
- g
|
|
2163
|
+
- kg
|
|
2164
|
+
- lb
|
|
2165
|
+
- oz
|
|
2166
|
+
- t
|
|
2167
|
+
title: Weight Unit
|
|
2168
|
+
type: string
|
|
2169
|
+
width:
|
|
2170
|
+
description: Width of the variant.
|
|
2171
|
+
title: Width
|
|
2172
|
+
type: number
|
|
2173
|
+
length:
|
|
2174
|
+
description: Length of the variant.
|
|
2175
|
+
title: Length
|
|
2176
|
+
type: number
|
|
2177
|
+
height:
|
|
2178
|
+
description: Height of the variant.
|
|
2179
|
+
title: Height
|
|
2180
|
+
type: number
|
|
2181
|
+
dimension_unit:
|
|
2182
|
+
description: Unit of dimension measurement.
|
|
2183
|
+
enum:
|
|
2184
|
+
- in
|
|
2185
|
+
- cm
|
|
2186
|
+
title: Dimension Unit
|
|
2187
|
+
type: string
|
|
2188
|
+
hs_code:
|
|
2189
|
+
description: Harmonized System code for customs.
|
|
2190
|
+
maxLength: 50
|
|
2191
|
+
title: HS Code
|
|
2192
|
+
type: string
|
|
2193
|
+
origin_country:
|
|
2194
|
+
description: Country of origin as an ISO 3166-1 alpha-2 code (e.g. "US").
|
|
2195
|
+
pattern: ^[A-Z]{2}$
|
|
2196
|
+
title: Origin Country
|
|
2197
|
+
type: string
|
|
2198
|
+
option_values:
|
|
2199
|
+
description: Values for each option defined on the product family, in the same order.
|
|
2200
|
+
items:
|
|
2201
|
+
maxLength: 255
|
|
2202
|
+
type: string
|
|
2203
|
+
title: Option Values
|
|
2204
|
+
type: array
|
|
2205
|
+
images:
|
|
2206
|
+
description: Images specific to this variant.
|
|
2207
|
+
items:
|
|
2208
|
+
$ref: '#/components/schemas/bulk-product-family-image.schema'
|
|
2209
|
+
title: Images
|
|
2210
|
+
type: array
|
|
2211
|
+
required:
|
|
2212
|
+
- sku
|
|
2213
|
+
- price
|
|
2214
|
+
- currency
|
|
2215
|
+
title: Bulk Variant
|
|
2216
|
+
type: object
|
|
2217
|
+
bulk-product-family.schema:
|
|
2218
|
+
description: |
|
|
2219
|
+
A product family containing one or more variants.
|
|
2220
|
+
|
|
2221
|
+
Matching priority for existing product families:
|
|
2222
|
+
1. `product_family_id` — Redo product family ID (direct lookup)
|
|
2223
|
+
2. `external_id` — ID from your external system
|
|
2224
|
+
3. SKU — Matched via variant SKUs
|
|
2225
|
+
If no match is found, a new product family is created.
|
|
2226
|
+
properties:
|
|
2227
|
+
product_family_id:
|
|
2228
|
+
description: Redo product family ID. Highest-priority match for updating an existing product family.
|
|
2229
|
+
maxLength: 255
|
|
2230
|
+
title: Product Family ID
|
|
2231
|
+
type: string
|
|
2232
|
+
external_id:
|
|
2233
|
+
description: Product family ID in your external system. Second-priority match.
|
|
2234
|
+
maxLength: 255
|
|
2235
|
+
title: External ID
|
|
2236
|
+
type: string
|
|
2237
|
+
title:
|
|
2238
|
+
description: Product family title.
|
|
2239
|
+
maxLength: 500
|
|
2240
|
+
minLength: 1
|
|
2241
|
+
title: Title
|
|
2242
|
+
type: string
|
|
2243
|
+
description:
|
|
2244
|
+
description: Product family description.
|
|
2245
|
+
maxLength: 5000
|
|
2246
|
+
title: Description
|
|
2247
|
+
type: string
|
|
2248
|
+
vendor:
|
|
2249
|
+
description: Vendor or manufacturer name.
|
|
2250
|
+
maxLength: 255
|
|
2251
|
+
title: Vendor
|
|
2252
|
+
type: string
|
|
2253
|
+
tags:
|
|
2254
|
+
default: []
|
|
2255
|
+
description: Tags for categorization.
|
|
2256
|
+
items:
|
|
2257
|
+
maxLength: 255
|
|
2258
|
+
type: string
|
|
2259
|
+
title: Tags
|
|
2260
|
+
type: array
|
|
2261
|
+
kind:
|
|
2262
|
+
default: SELLABLE
|
|
2263
|
+
description: Whether the product is sellable or non-sellable.
|
|
2264
|
+
enum:
|
|
2265
|
+
- SELLABLE
|
|
2266
|
+
- NON_SELLABLE
|
|
2267
|
+
title: Kind
|
|
2268
|
+
type: string
|
|
2269
|
+
options:
|
|
2270
|
+
description: Product options (e.g. Size, Color) with their possible values.
|
|
2271
|
+
items:
|
|
2272
|
+
$ref: '#/components/schemas/bulk-product-family-option.schema'
|
|
2273
|
+
title: Options
|
|
2274
|
+
type: array
|
|
2275
|
+
images:
|
|
2276
|
+
description: Images for the product family.
|
|
2277
|
+
items:
|
|
2278
|
+
$ref: '#/components/schemas/bulk-product-family-image.schema'
|
|
2279
|
+
title: Images
|
|
2280
|
+
type: array
|
|
2281
|
+
variants:
|
|
2282
|
+
description: Product variants. At least 1 and up to 100 per product family.
|
|
2283
|
+
items:
|
|
2284
|
+
$ref: '#/components/schemas/bulk-variant.schema'
|
|
2285
|
+
maxItems: 100
|
|
2286
|
+
minItems: 1
|
|
2287
|
+
title: Variants
|
|
2288
|
+
type: array
|
|
2289
|
+
required:
|
|
2290
|
+
- title
|
|
2291
|
+
- variants
|
|
2292
|
+
title: Bulk Product Family
|
|
2293
|
+
type: object
|
|
2294
|
+
bulk-product-upload-request.schema:
|
|
2295
|
+
description: Request body for bulk uploading product families and their variants.
|
|
2296
|
+
properties:
|
|
2297
|
+
products:
|
|
2298
|
+
description: Product families to create or update. Between 1 and 1000 per request.
|
|
2299
|
+
items:
|
|
2300
|
+
$ref: '#/components/schemas/bulk-product-family.schema'
|
|
2301
|
+
maxItems: 1000
|
|
2302
|
+
minItems: 1
|
|
2303
|
+
title: Products
|
|
2304
|
+
type: array
|
|
2305
|
+
required:
|
|
2306
|
+
- products
|
|
2307
|
+
title: Bulk Product Upload Request
|
|
2308
|
+
type: object
|
|
2309
|
+
bulk-product-upload-response.schema:
|
|
2310
|
+
description: Response from a bulk product upload operation.
|
|
2311
|
+
properties:
|
|
2312
|
+
total_count:
|
|
2313
|
+
description: Total number of product families in the request.
|
|
2314
|
+
title: Total Count
|
|
2315
|
+
type: integer
|
|
2316
|
+
processed_count:
|
|
2317
|
+
description: Number of product families processed successfully.
|
|
2318
|
+
title: Processed Count
|
|
2319
|
+
type: integer
|
|
2320
|
+
error_count:
|
|
2321
|
+
description: Number of product families that failed to process.
|
|
2322
|
+
title: Error Count
|
|
2323
|
+
type: integer
|
|
2324
|
+
results:
|
|
2325
|
+
description: Per-product-family results.
|
|
2326
|
+
items:
|
|
2327
|
+
oneOf:
|
|
2328
|
+
- description: A product family that was created or updated successfully.
|
|
2329
|
+
properties:
|
|
2330
|
+
status:
|
|
2331
|
+
description: Whether the product family was created or updated.
|
|
2332
|
+
enum:
|
|
2333
|
+
- created
|
|
2334
|
+
- updated
|
|
2335
|
+
title: Status
|
|
2336
|
+
type: string
|
|
2337
|
+
product_family_id:
|
|
2338
|
+
description: Redo product family ID.
|
|
2339
|
+
title: Product Family ID
|
|
2340
|
+
type: string
|
|
2341
|
+
products:
|
|
2342
|
+
description: Variant results within this product family.
|
|
2343
|
+
items:
|
|
2344
|
+
properties:
|
|
2345
|
+
id:
|
|
2346
|
+
description: Redo product ID.
|
|
2347
|
+
title: ID
|
|
2348
|
+
type: string
|
|
2349
|
+
sku:
|
|
2350
|
+
description: Product SKU.
|
|
2351
|
+
title: SKU
|
|
2352
|
+
type: string
|
|
2353
|
+
required:
|
|
2354
|
+
- id
|
|
2355
|
+
- sku
|
|
2356
|
+
type: object
|
|
2357
|
+
title: Products
|
|
2358
|
+
type: array
|
|
2359
|
+
required:
|
|
2360
|
+
- status
|
|
2361
|
+
- product_family_id
|
|
2362
|
+
- products
|
|
2363
|
+
title: Success Result
|
|
2364
|
+
type: object
|
|
2365
|
+
- description: A product family that failed to process.
|
|
2366
|
+
properties:
|
|
2367
|
+
status:
|
|
2368
|
+
const: error
|
|
2369
|
+
description: Indicates an error occurred.
|
|
2370
|
+
title: Status
|
|
2371
|
+
type: string
|
|
2372
|
+
error:
|
|
2373
|
+
description: Error message describing what went wrong.
|
|
2374
|
+
title: Error
|
|
2375
|
+
type: string
|
|
2376
|
+
required:
|
|
2377
|
+
- status
|
|
2378
|
+
- error
|
|
2379
|
+
title: Error Result
|
|
2380
|
+
type: object
|
|
2381
|
+
title: Results
|
|
2382
|
+
type: array
|
|
2383
|
+
required:
|
|
2384
|
+
- total_count
|
|
2385
|
+
- processed_count
|
|
2386
|
+
- error_count
|
|
2387
|
+
- results
|
|
2388
|
+
title: Bulk Product Upload Response
|
|
2389
|
+
type: object
|
|
1920
2390
|
person-name.schema:
|
|
1921
2391
|
description: Person name.
|
|
1922
2392
|
properties:
|
package/package.json
CHANGED