@redotech/redo-api-schema 2.2.427 → 2.2.435

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 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.
@@ -512,10 +810,10 @@ export interface components {
512
810
  /**
513
811
  * Created at
514
812
  * Format: date-time
515
- * @description Timestamp when the customer was created.
813
+ * @description Timestamp when the customer was created. May be null for older customers created before this field was tracked.
516
814
  */
517
- createdAt: string;
518
- /** @description Custom field values as key-value pairs, where keys are field names and values can be strings, numbers, or booleans. */
815
+ createdAt?: string | null;
816
+ /** @description Custom field values as key-value pairs, where keys are field names and values can be strings, numbers, or booleans. DATE custom field values are returned as ISO 8601 datetime strings (e.g., "2026-01-15T12:00:00.000Z"), not Date objects. */
519
817
  customFields?: {
520
818
  [key: string]: string | number | boolean;
521
819
  };
@@ -536,9 +834,9 @@ export interface components {
536
834
  /**
537
835
  * Updated at
538
836
  * Format: date-time
539
- * @description Timestamp when the customer was last updated.
837
+ * @description Timestamp when the customer was last updated. May be null for older customers created before this field was tracked.
540
838
  */
541
- updatedAt: string;
839
+ updatedAt?: string | null;
542
840
  };
543
841
  /** @description Email subscription updates */
544
842
  "customer-subscription-email.schema": {
@@ -586,12 +884,19 @@ export interface components {
586
884
  */
587
885
  "customer-upsert-request.schema": {
588
886
  /**
589
- * @description Custom field values as key-value pairs. Keys are field names and values can be strings, numbers, or booleans. New fields are created automatically if they don't exist yet.
887
+ * @description Custom field values as key-value pairs. Keys are field names and values can be strings, numbers, or booleans. The field type is determined automatically based on the value:
888
+ * - String values → STRING custom field
889
+ * - Number values → NUMBER custom field
890
+ * - Boolean values → BOOLEAN custom field
891
+ * - ISO 8601 datetime strings (e.g., "2026-02-24T12:15:00.000Z") → DATE custom field (auto-detected)
892
+ *
893
+ * If a field name does not already have a declaration, one is created automatically. For STRING fields, unique values are tracked as options (used for segment filtering dropdowns). NUMBER, BOOLEAN, and DATE fields do not track options.
590
894
  * @example {
591
895
  * "subscription_source": "web",
592
896
  * "status": "Active",
593
897
  * "loyalty_points": 1250,
594
- * "vip_member": true
898
+ * "vip_member": true,
899
+ * "signup_date": "2026-02-24T12:15:00.000Z"
595
900
  * }
596
901
  */
597
902
  customFields?: {
@@ -2347,6 +2652,66 @@ export interface operations {
2347
2652
  };
2348
2653
  };
2349
2654
  };
2655
+ /**
2656
+ * Bulk upload products (Beta)
2657
+ * @description Bulk create or update product families and their variants.
2658
+ *
2659
+ * Submit up to 1,000 product families per request, each containing up to 100 variants.
2660
+ * Products are processed asynchronously in batches. Only one bulk upload can run per store at a time.
2661
+ *
2662
+ * ## Matching Strategy
2663
+ *
2664
+ * The API uses the following priority to match incoming product families to existing records:
2665
+ *
2666
+ * 1. **`product_family_id`** — Redo product family ID (direct lookup)
2667
+ * 2. **`external_id`** — ID from your external system
2668
+ * 3. **SKU** — Matched via variant SKUs
2669
+ *
2670
+ * If no match is found, a new product family is created.
2671
+ *
2672
+ * ## Concurrency
2673
+ *
2674
+ * Only one bulk upload operation can run per store at a time. If a bulk upload is already
2675
+ * in progress, the request will return a `409 Conflict` error.
2676
+ */
2677
+ "Products bulk upload": {
2678
+ parameters: {
2679
+ path: {
2680
+ storeId: components["parameters"]["store-id.param"];
2681
+ };
2682
+ };
2683
+ requestBody: {
2684
+ content: {
2685
+ "application/json": components["schemas"]["bulk-product-upload-request.schema"];
2686
+ };
2687
+ };
2688
+ responses: {
2689
+ /** @description Upload completed */
2690
+ 200: {
2691
+ content: {
2692
+ "application/json": components["schemas"]["bulk-product-upload-response.schema"];
2693
+ };
2694
+ };
2695
+ /** @description Invalid request body or missing required fields */
2696
+ 400: {
2697
+ content: {
2698
+ "application/json": components["schemas"]["error.schema"];
2699
+ };
2700
+ };
2701
+ /** @description A bulk upload is already in progress for this store */
2702
+ 409: {
2703
+ content: {
2704
+ "application/json": components["schemas"]["error.schema"];
2705
+ };
2706
+ };
2707
+ /** @description Error */
2708
+ default: {
2709
+ content: {
2710
+ "application/problem+json": components["schemas"]["error.schema"];
2711
+ };
2712
+ };
2713
+ };
2714
+ };
2350
2715
  /**
2351
2716
  * List Returns
2352
2717
  * @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:
@@ -1792,7 +1943,7 @@ components:
1792
1943
  location:
1793
1944
  $ref: '#/components/schemas/customer-location.schema'
1794
1945
  customFields:
1795
- description: Custom field values as key-value pairs, where keys are field names and values can be strings, numbers, or booleans.
1946
+ description: Custom field values as key-value pairs, where keys are field names and values can be strings, numbers, or booleans. DATE custom field values are returned as ISO 8601 datetime strings (e.g., "2026-01-15T12:00:00.000Z"), not Date objects.
1796
1947
  type: object
1797
1948
  additionalProperties:
1798
1949
  oneOf:
@@ -1804,25 +1955,28 @@ components:
1804
1955
  status: Active
1805
1956
  loyalty_points: 1250
1806
1957
  vip_member: true
1958
+ signup_date: '2026-02-24T12:15:00.000Z'
1807
1959
  createdAt:
1808
- description: Timestamp when the customer was created.
1960
+ description: Timestamp when the customer was created. May be null for older customers created before this field was tracked.
1809
1961
  format: date-time
1810
1962
  title: Created at
1811
1963
  examples:
1812
1964
  - '2026-02-20T18:30:00.000Z'
1813
- type: string
1965
+ type:
1966
+ - string
1967
+ - 'null'
1814
1968
  updatedAt:
1815
- description: Timestamp when the customer was last updated.
1969
+ description: Timestamp when the customer was last updated. May be null for older customers created before this field was tracked.
1816
1970
  format: date-time
1817
1971
  title: Updated at
1818
1972
  examples:
1819
1973
  - '2026-02-24T12:15:00.000Z'
1820
- type: string
1974
+ type:
1975
+ - string
1976
+ - 'null'
1821
1977
  required:
1822
1978
  - id
1823
1979
  - email
1824
- - createdAt
1825
- - updatedAt
1826
1980
  title: Customer
1827
1981
  type: object
1828
1982
  customer-upsert-request.schema:
@@ -1847,7 +2001,14 @@ components:
1847
2001
  location:
1848
2002
  $ref: '#/components/schemas/customer-location.schema'
1849
2003
  customFields:
1850
- description: Custom field values as key-value pairs. Keys are field names and values can be strings, numbers, or booleans. New fields are created automatically if they don't exist yet.
2004
+ description: |-
2005
+ Custom field values as key-value pairs. Keys are field names and values can be strings, numbers, or booleans. The field type is determined automatically based on the value:
2006
+ - String values → STRING custom field
2007
+ - Number values → NUMBER custom field
2008
+ - Boolean values → BOOLEAN custom field
2009
+ - ISO 8601 datetime strings (e.g., "2026-02-24T12:15:00.000Z") → DATE custom field (auto-detected)
2010
+
2011
+ If a field name does not already have a declaration, one is created automatically. For STRING fields, unique values are tracked as options (used for segment filtering dropdowns). NUMBER, BOOLEAN, and DATE fields do not track options.
1851
2012
  type: object
1852
2013
  additionalProperties:
1853
2014
  oneOf:
@@ -1859,6 +2020,7 @@ components:
1859
2020
  status: Active
1860
2021
  loyalty_points: 1250
1861
2022
  vip_member: true
2023
+ signup_date: '2026-02-24T12:15:00.000Z'
1862
2024
  required:
1863
2025
  - email
1864
2026
  title: Customer Upsert Request
@@ -1917,6 +2079,325 @@ components:
1917
2079
  - createdAt
1918
2080
  - charge
1919
2081
  type: object
2082
+ bulk-product-family-option.schema:
2083
+ description: A product option (e.g. Size, Color) with its possible values.
2084
+ properties:
2085
+ name:
2086
+ description: Option name (e.g. "Size", "Color").
2087
+ maxLength: 255
2088
+ title: Name
2089
+ type: string
2090
+ values:
2091
+ description: Possible values for this option (e.g. ["Small", "Medium", "Large"]).
2092
+ items:
2093
+ maxLength: 255
2094
+ type: string
2095
+ title: Values
2096
+ type: array
2097
+ required:
2098
+ - name
2099
+ - values
2100
+ title: Product Family Option
2101
+ type: object
2102
+ bulk-product-family-image.schema:
2103
+ description: An image associated with a product family or variant.
2104
+ properties:
2105
+ url:
2106
+ description: URL of the image.
2107
+ format: uri
2108
+ title: URL
2109
+ type: string
2110
+ alt_text:
2111
+ description: Alt text for the image.
2112
+ maxLength: 1000
2113
+ title: Alt Text
2114
+ type: string
2115
+ required:
2116
+ - url
2117
+ - alt_text
2118
+ title: Product Family Image
2119
+ type: object
2120
+ bulk-variant.schema:
2121
+ description: A product variant within a product family.
2122
+ properties:
2123
+ id:
2124
+ description: Redo variant ID. Used for matching to an existing variant.
2125
+ maxLength: 255
2126
+ title: ID
2127
+ type: string
2128
+ external_id:
2129
+ description: Variant ID in your external system. Used for matching if `id` is not provided.
2130
+ maxLength: 255
2131
+ title: External ID
2132
+ type: string
2133
+ title:
2134
+ description: Variant title (e.g. "Small / Blue").
2135
+ maxLength: 500
2136
+ title: Title
2137
+ type: string
2138
+ sku:
2139
+ description: Stock keeping unit. Required. Used for matching if neither `id` nor `external_id` are provided.
2140
+ maxLength: 255
2141
+ minLength: 1
2142
+ title: SKU
2143
+ type: string
2144
+ upc:
2145
+ description: Universal product code.
2146
+ maxLength: 50
2147
+ title: UPC
2148
+ type: string
2149
+ barcodes:
2150
+ description: Additional barcodes for this variant.
2151
+ items:
2152
+ maxLength: 255
2153
+ type: string
2154
+ title: Barcodes
2155
+ type: array
2156
+ price:
2157
+ description: Price in the smallest currency unit (e.g. cents for USD).
2158
+ minimum: 0
2159
+ title: Price
2160
+ type: integer
2161
+ currency:
2162
+ description: Currency code (e.g. "USD").
2163
+ maxLength: 10
2164
+ title: Currency
2165
+ type: string
2166
+ weight:
2167
+ description: Weight of the variant.
2168
+ title: Weight
2169
+ type: number
2170
+ weight_unit:
2171
+ description: Unit of weight measurement.
2172
+ enum:
2173
+ - g
2174
+ - kg
2175
+ - lb
2176
+ - oz
2177
+ - t
2178
+ title: Weight Unit
2179
+ type: string
2180
+ width:
2181
+ description: Width of the variant.
2182
+ title: Width
2183
+ type: number
2184
+ length:
2185
+ description: Length of the variant.
2186
+ title: Length
2187
+ type: number
2188
+ height:
2189
+ description: Height of the variant.
2190
+ title: Height
2191
+ type: number
2192
+ dimension_unit:
2193
+ description: Unit of dimension measurement.
2194
+ enum:
2195
+ - in
2196
+ - cm
2197
+ title: Dimension Unit
2198
+ type: string
2199
+ hs_code:
2200
+ description: Harmonized System code for customs.
2201
+ maxLength: 50
2202
+ title: HS Code
2203
+ type: string
2204
+ origin_country:
2205
+ description: Country of origin as an ISO 3166-1 alpha-2 code (e.g. "US").
2206
+ pattern: ^[A-Z]{2}$
2207
+ title: Origin Country
2208
+ type: string
2209
+ option_values:
2210
+ description: Values for each option defined on the product family, in the same order.
2211
+ items:
2212
+ maxLength: 255
2213
+ type: string
2214
+ title: Option Values
2215
+ type: array
2216
+ images:
2217
+ description: Images specific to this variant.
2218
+ items:
2219
+ $ref: '#/components/schemas/bulk-product-family-image.schema'
2220
+ title: Images
2221
+ type: array
2222
+ required:
2223
+ - sku
2224
+ - price
2225
+ - currency
2226
+ title: Bulk Variant
2227
+ type: object
2228
+ bulk-product-family.schema:
2229
+ description: |
2230
+ A product family containing one or more variants.
2231
+
2232
+ Matching priority for existing product families:
2233
+ 1. `product_family_id` — Redo product family ID (direct lookup)
2234
+ 2. `external_id` — ID from your external system
2235
+ 3. SKU — Matched via variant SKUs
2236
+ If no match is found, a new product family is created.
2237
+ properties:
2238
+ product_family_id:
2239
+ description: Redo product family ID. Highest-priority match for updating an existing product family.
2240
+ maxLength: 255
2241
+ title: Product Family ID
2242
+ type: string
2243
+ external_id:
2244
+ description: Product family ID in your external system. Second-priority match.
2245
+ maxLength: 255
2246
+ title: External ID
2247
+ type: string
2248
+ title:
2249
+ description: Product family title.
2250
+ maxLength: 500
2251
+ minLength: 1
2252
+ title: Title
2253
+ type: string
2254
+ description:
2255
+ description: Product family description.
2256
+ maxLength: 5000
2257
+ title: Description
2258
+ type: string
2259
+ vendor:
2260
+ description: Vendor or manufacturer name.
2261
+ maxLength: 255
2262
+ title: Vendor
2263
+ type: string
2264
+ tags:
2265
+ default: []
2266
+ description: Tags for categorization.
2267
+ items:
2268
+ maxLength: 255
2269
+ type: string
2270
+ title: Tags
2271
+ type: array
2272
+ kind:
2273
+ default: SELLABLE
2274
+ description: Whether the product is sellable or non-sellable.
2275
+ enum:
2276
+ - SELLABLE
2277
+ - NON_SELLABLE
2278
+ title: Kind
2279
+ type: string
2280
+ options:
2281
+ description: Product options (e.g. Size, Color) with their possible values.
2282
+ items:
2283
+ $ref: '#/components/schemas/bulk-product-family-option.schema'
2284
+ title: Options
2285
+ type: array
2286
+ images:
2287
+ description: Images for the product family.
2288
+ items:
2289
+ $ref: '#/components/schemas/bulk-product-family-image.schema'
2290
+ title: Images
2291
+ type: array
2292
+ variants:
2293
+ description: Product variants. At least 1 and up to 100 per product family.
2294
+ items:
2295
+ $ref: '#/components/schemas/bulk-variant.schema'
2296
+ maxItems: 100
2297
+ minItems: 1
2298
+ title: Variants
2299
+ type: array
2300
+ required:
2301
+ - title
2302
+ - variants
2303
+ title: Bulk Product Family
2304
+ type: object
2305
+ bulk-product-upload-request.schema:
2306
+ description: Request body for bulk uploading product families and their variants.
2307
+ properties:
2308
+ products:
2309
+ description: Product families to create or update. Between 1 and 1000 per request.
2310
+ items:
2311
+ $ref: '#/components/schemas/bulk-product-family.schema'
2312
+ maxItems: 1000
2313
+ minItems: 1
2314
+ title: Products
2315
+ type: array
2316
+ required:
2317
+ - products
2318
+ title: Bulk Product Upload Request
2319
+ type: object
2320
+ bulk-product-upload-response.schema:
2321
+ description: Response from a bulk product upload operation.
2322
+ properties:
2323
+ total_count:
2324
+ description: Total number of product families in the request.
2325
+ title: Total Count
2326
+ type: integer
2327
+ processed_count:
2328
+ description: Number of product families processed successfully.
2329
+ title: Processed Count
2330
+ type: integer
2331
+ error_count:
2332
+ description: Number of product families that failed to process.
2333
+ title: Error Count
2334
+ type: integer
2335
+ results:
2336
+ description: Per-product-family results.
2337
+ items:
2338
+ oneOf:
2339
+ - description: A product family that was created or updated successfully.
2340
+ properties:
2341
+ status:
2342
+ description: Whether the product family was created or updated.
2343
+ enum:
2344
+ - created
2345
+ - updated
2346
+ title: Status
2347
+ type: string
2348
+ product_family_id:
2349
+ description: Redo product family ID.
2350
+ title: Product Family ID
2351
+ type: string
2352
+ products:
2353
+ description: Variant results within this product family.
2354
+ items:
2355
+ properties:
2356
+ id:
2357
+ description: Redo product ID.
2358
+ title: ID
2359
+ type: string
2360
+ sku:
2361
+ description: Product SKU.
2362
+ title: SKU
2363
+ type: string
2364
+ required:
2365
+ - id
2366
+ - sku
2367
+ type: object
2368
+ title: Products
2369
+ type: array
2370
+ required:
2371
+ - status
2372
+ - product_family_id
2373
+ - products
2374
+ title: Success Result
2375
+ type: object
2376
+ - description: A product family that failed to process.
2377
+ properties:
2378
+ status:
2379
+ const: error
2380
+ description: Indicates an error occurred.
2381
+ title: Status
2382
+ type: string
2383
+ error:
2384
+ description: Error message describing what went wrong.
2385
+ title: Error
2386
+ type: string
2387
+ required:
2388
+ - status
2389
+ - error
2390
+ title: Error Result
2391
+ type: object
2392
+ title: Results
2393
+ type: array
2394
+ required:
2395
+ - total_count
2396
+ - processed_count
2397
+ - error_count
2398
+ - results
2399
+ title: Bulk Product Upload Response
2400
+ type: object
1920
2401
  person-name.schema:
1921
2402
  description: Person name.
1922
2403
  properties:
package/package.json CHANGED
@@ -31,5 +31,5 @@
31
31
  ]
32
32
  }
33
33
  },
34
- "version": "2.2.427"
34
+ "version": "2.2.435"
35
35
  }