4WS Suite
Home
API Reference
API Reference
  • Data mangement API
  • Documents API
Home
API Reference
API Reference
  • Data mangement API
  • Documents API
Fourwayshop
  1. Use cases
  • Four Way Shop API
  • Before start develop
  • Why we use Resource-oriented design
  • Technical Prerequisites
  • Concepts
    • Date Handling
    • Managing Languages
    • Handling Field Updates and Null Values in Service Requests
    • ISO Code
    • Vat rates
    • Product structure
    • Product Images
    • Product dimensions
    • Product pricing
    • Dimension group vs Dimension grouping
    • Subjects overview
    • Documents structure
  • Best Practices
    • Best Practices for Error Handling in External System
    • How Testing callback response
    • Best Practices for delopers
  • Data management
    • Authentication
    • Rate Limits
    • Paginated Responses
    • Getting Started
    • Use cases
      • Cataloging a Dimension
      • Create a New Product
      • Retriving a product details
      • Defining Product Pricing
      • Updating External System Product Catalog
      • Activate product dimensions and add barcodes to SKUs
      • Move a Barcode from One Product to Another
    • API
      • Login
        • login
      • Product
        • Brand
          • Get All Brands
          • Get A Brand
          • Insert brand
          • Update brand
        • Season
          • Get All Seasons
          • Get A Season
          • Insert season
          • Update season
        • Attribute
          • Get All Attribute Types
          • Get Attribute Type
          • Get Attribute
          • Insert attribute
          • Update attribute
        • Hierarchy
          • Insert hierarchy
          • Update hierarchy
        • Dimension groups
          • Insert dimension group
          • Update dimension group
        • Dimension
          • Insert dimension
          • Update dimension
          • Delete dimension
        • Product
          • Get products
          • Get product
          • Get product grouping
          • Get SKU's barcodes
          • Get product stock
          • Insert product
          • Update product
        • Activate dimensions on products
          • Insert active dimensions
          • Delete active dimensions
        • Barcode
          • Get SKU from barcode
          • Generate missing barcodes
          • Generate missing barcode for SKU
          • Insert barcode
          • Delete barcode
        • Prices
          • Get product prices
        • Price dimension groupings
          • Get Dimension Price Grouping
          • Get All Dimension Price Grouping
          • Insert dimension grouping
          • Update dimension grouping
          • Delete dimension grouping
        • Assortment
          • insert product assortment
          • delete product assortment
        • Image
          • Get images
          • Add image
          • Replace image
          • Delete image
        • Supplier
          • Get Item suppliers
          • Insert item supplier
          • Delete item supplier
          • Update item supplier
        • Custom category
          • Get Custom code
          • Insert Custom code
          • Update Custom code
        • Vat
          • Vat types
            • Get VAT type
            • Get VAT types
          • VATs
            • Get VATs
            • Get VATs by type
            • Get VAT
          • Vat rates
            • Get VAT rates
            • Get single VAT rates
        • Stock
          • Insert stock
          • Get stock
      • Price lists
        • Get All Price Lists
        • Get Single Price List
        • Get Prices by Price List Type
        • Get Prices by Price List Code
        • Get Entities by Price List Code
        • Insert Price List
        • Insert Product Price
        • Insert Entity On Price Lists
        • Update price list
        • Delete all product prices
        • Delete single product price
        • Delete entity from a price lists
        • Update Product price
      • Supplier
        • Supplier contacts
        • Supplier addresses
        • Get Suppliers
        • Get A Specific Supplier
        • Insert supplier
        • Update supplier
      • Entities
        • Get entities
        • Get entity
        • Insert entity
        • Update entity
      • Miscellaneous
        • Get requests rate limits
      • Catalog
        • Get Catalogs details
        • Get Catalog details by Code
        • Get products by Catalog Code
      • Export
        • Get bulk CSV Export
  • Documents
    • Authentication
    • Paginated responses
    • Managing API Callbacks
    • Document notifications
    • Customer promo data notifications
    • Use cases
      • Updating External System Stock
      • E-commerce Recipt Processing
      • E-commerce Return Receipt Processing
      • E-commerce Order sale Processing
      • E-commerce Return Order Processing
      • E-commerce Order Handling and Internal Stock Transfer
      • E-commerce & Gift Card
      • Creating a free entry
      • Retrieving a Document by Identifier
      • Cart Validation Service
      • Sale and Shipping costs
      • Handling Line Item Discounts
      • Managing Price Forcing in Cart Items
      • Purchase Order Registration
      • Supplier Goods Entry From Purchase Order
      • Update an Orchestrated Order
      • New Orchestrated Return Orders
    • API
      • Document Manager
        • Orders
          • Save Sale Order
          • Save Return Order
        • Orchestrated Orders
          • Orchestrated Order
          • Orchestrated Return order
          • Orchestrated Update order
          • Orchestrated Sale Order: Cancel Purchased Quantities
        • Cart
          • Cart Validation
          • Cart Full Validation
        • Sales
          • Save receipt
          • Salve only Order
          • Replace or update sale
          • Get last digital order
        • Warehouse
          • Save Entry from supplier
          • Save Transfer document
          • Save Free Entry
        • Purchase
          • Save Purchase
        • Get Document
        • Update Document External Reference & Note
      • Customer
        • Get Customer
        • Set Customer Opt-in
      • Loyalty vouchers
        • Get customer loyalty vouchers
        • Get loyalty vouchers at a time interval
        • Get last loyalty vouchers
      • Giftcard
        • Get Giftcard
        • Update Giftcard
        • Generate Gift Card Barcode
        • Gift Card PDF Generation
      • Stock
        • Get Stock
        • Get last stock
        • Insert Stock
  • 🚫 KeepIT
    • Authentication
    • Use cases
    • Services
      • Insert/Update services
      • Delete services
    • Points
      • Insert/Update points
      • Calculate and Insert/Update Points
      • Delete points
    • Subjects
      • Check customers
      • Anonymize customers
      • Get subject data
      • Get customer discount
      • Insert/Update customer
      • Insert/Update billing customers
      • Insert/Update CRM customer
      • Insert/Update children
      • Change/Replacement card
      • Insert CRM user
    • Giftcards & Vouchers
      • Get giftcard
      • Insert/Update giftcards
      • Insert/Update Vouchers
    • Missed Opportunity
      • Get Lost Opportunities
      • Insert/Update missed opportunities
      • Delete missed opportunity
    • Suppliers
      • Insert/Update tailor
      • Insert/Update supplier
    • Mappings
      • Insert Mappings
      • Get Mappings
  1. Use cases

Updating External System Product Catalog

Updating External System Product Catalog#

Use Case Description#

This document outlines how an external system (e.g., an e-commerce website) can update its product catalog, including barcodes, prices and discounts, through API services. The process covers two primary use cases:
1.
Initial Setup: Full catalog and product import.
2.
Subsequent Updates: Incremental updates to the catalog and product details.
In both scenarios, data is fetched in a paginated format via the respective API services. The external system processes this data and updates its internal systems accordingly.
Actors#
External System: The system that wants to update its product catalog and prices.
4ws.trade: Provides access to product and catalog data through the API services.
Product and Catalog Services: Backend systems that store and provide catalog and product data.
Preconditions#
The external system must have the necessary permissions and access to the services, please refer to Authentication.
The catalog code must be known for updates, or the system must retrieve the catalog list first.
For updates, the system must store the date of the last successful synchronization, to be used as fromDate in the next incremental update. fromDate cannot be more than 24 hours old: if more time has passed, the external system must perform the initial setup again.

APIs Used#

1.
Initial Setup:
Get bulk CSV Export:
CATALOG_EXPORT: Retrieves catalog details.
PRODUCTS_CATALOG_EXPORT: Retrieves product details from the catalog.
2.
Subsequent Updates:
Get Catalog details by Code: Retrieves information about a specific catalog code.
Get products by Catalog Code: Retrieves the products updated in the catalog after a specified fromDate.
Get product: Retrieves specific product details.
Get SKU's barcodes: Retrieves the barcodes associated with the product SKUs.
Get product prices: Retrieves the prices of a single product (sale price and discount), optionally filtered by price list and validity date.
Get prices from price list: Retrieves all the prices of a price list, identified by price list type and code, with their validity period.
Product details
For more details on product details, please refer to the documentation Retrieving product details.
Which pricing API to use
Get product prices and Get prices from price list are alternatives:
use Get product prices to read the prices of a single product, for example right after it has been returned as updated by Get products by Catalog Code;
use Get prices from price list to download all the prices of a price list in a single paginated flow, with one request per page instead of one per product.

Main Success Scenario#

1.
Initial Setup:
The external system calls Get bulk CSV Export with CATALOG_EXPORT to obtain the catalog details.
Once the catalog is known, it calls Get bulk CSV Export with PRODUCTS_CATALOG_EXPORT to retrieve the products of the catalog.
The external system processes the data, updating its internal product catalog and prices.
The external system stores the date of the synchronization, to be used as fromDate for the subsequent updates.
2.
Subsequent Updates:
The external system calls Get products by Catalog Code with the fromDate parameter to get only the updated products, and returnDisabled=true to also receive the disabled products to remove.
For each updated product, it retrieves the product details (Get product), the barcodes (Get SKU's barcodes) and the prices (Get product prices).
Prices can alternatively be retrieved for the whole price list with Get prices from price list.
When the update completes successfully, the external system stores the new synchronization date.
Paginated Responses
Some services are paginated to handle large sets of data efficiently.
For detailed information on how to handle pagination, refer to our Paginated Responses

Alternate Flows#

Catalog Code Not Known: If the catalog code is not known, the external system must first retrieve the list of available catalogs with Get bulk CSV Export using CATALOG_EXPORT.
Last Synchronization Older than 24 Hours: Get products by Catalog Code does not accept a fromDate more than 24 hours old: the external system must perform the initial setup again.
Error Handling: If a request fails, the external system should retry the request and apply error handling mechanisms to prevent partial updates.

Sequence Diagrams#

Initial Setup
Subsequent Updates

Code Examples in Node.js#

Fetching Updated Products and Handling Pagination#

This example shows how to handle cursor-based pagination: while the response contains nextCursor, the next page is requested by passing it as cursor.

Best Practices for CSV Processing#

1.
Handling Large Files:
Use streaming to process large CSV files efficiently. Libraries like csv-parser in Node.js allow you to process rows one at a time without loading the entire file into memory.
Implement chunking mechanisms if the file is too large to process in one go (using a staging table is recommended).
2.
Error Handling:
Unreadable Files: Implement retry logic for failed file downloads or unreadable files. Log errors for audit and debugging purposes.
Invalid Rows: If a specific row in the CSV is invalid, log the error but continue processing the remaining rows. Depending on the severity of the error, you may want to skip that row or mark it for manual review.
3.
Recovery Policies:
Retries: Implement retry mechanisms with exponential backoff for failed API requests or file downloads.
Data Consistency: Ensure that updates are applied transactionally. If part of the file is processed but an error occurs, either roll back the changes or store the partial progress to resume processing later.
Logging and Monitoring: Track the progress of CSV processing and ensure that any issues (file corruption, invalid data) are logged and alerted to the system administrators.

Best Practices for Incremental Updates#

1.
Synchronization Date:
Always store the date of the last successful synchronization: it is the fromDate value for the next request.
Update it only when the synchronization completes; keep track of the products that failed and retry them, so that they are not lost by moving fromDate forward.
Schedule incremental updates more often than every 24 hours, so that fromDate always stays within the accepted window.
2.
Monitoring:
Implement robust logging for both success and failure states. Use monitoring tools to alert administrators to potential issues in file processing or data updates.
Use metrics like file size, processing time and error rates to identify performance bottlenecks.
Best Practices
Please refer to Best Practices for Error Handling in External System for best practices on implementation.
By following these best practices, your external system can efficiently integrate with the API and manage large-scale data updates without performance issues or data inconsistencies.
Modified at 2026-10-27 14:05:55
Previous
Defining Product Pricing
Next
Activate product dimensions and add barcodes to SKUs
Built with