4WS Suite
Home
API Reference
  • Data mangement API
  • Documents API
Home
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
    • API Changelog
    • Use cases
      • Cataloging a Dimension
      • Creating a New Product
      • Retriving a product details
      • Defining Product Pricing
      • Updating External System Product Catalog
      • Activate product variants 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 price lists
        • Get price lists by type
        • Get price list
        • Get prices from price list
        • Get entities from price lists
        • 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
      • 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
        • 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 references
      • 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
    • Articles (deprecated)
      • Get Articles
      • Insert/Update dimensional groups
      • Insert/Update price groupings
      • Insert/Update dimensions
      • Insert/Update attributes
      • Insert/Update hieararchies
      • Insert/Update seasons
      • Insert/Update articles
      • Insert/Update Articles Master data
      • Insert/Update Lists
      • Insert/Update Dimensions Groups
      • Create EAN13 barcode
      • Insert/Update Barcode
      • Assign dimensions to groupings
    • Price Lists (deprecated)
      • Insert price list
      • Add entity to price list
      • Add item price to price list
      • Insert sale profile
      • Insert sale period
      • Add item price to sale period
    • Stock (deprecated)
      • Get Stock
      • Get Stock Date
      • Get Stock CSV
      • Insert/Update Stock
    • Sales (deprecated)
      • Insert/Update sales
      • Delete sales
      • Upload printer sales archive
    • Deposit (deprecated)
      • Insert/Update deposits
    • 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
    • Documents (deprecated)
      • Insert documents
      • Get document
    • Catalogs
      • Get Catalog
      • Insert/update catalog
      • Insert/Update hierarchies item catalog
      • Insert/Update entity clusters
    • Suppliers (deprecated)
      • Insert/Update tailor
      • Insert/Update supplier
    • Export (deprecated)
      • Get Items Export
      • Get Barcodes Export
      • Get Prices Export
      • Get Customers Export
      • Get Suppliers Export
      • Get Sales Export
      • Get Movements Export
      • Get Vouchers Export
    • Configuration Mobile Shop (deprecated)
      • Insert/Update Entities
      • Insert Seller
    • 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 website can update its product catalog, including pricing 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 platform processes this data and updates its internal systems accordingly.
Actors#
External System: The website that wants to update its product catalog and prices.
4ws.trade: Provides access to product and catalog data through the provided 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 document creation service, 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 last successful API invocation time to ensure accurate incremental updates.

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 Product by Code Retrieve infos about a specific catalog code.
Get products Catalog: Retrieves updated products based on the catalog code and a specified fromDatetime.
Get product: Retrieves specific product details.
Get SKU's barcodes: Retrieves the barcodes associated with the product SKUs.
Get product prices: Retrieves pricing information for a specific product (sale price and discount).
Get prices from price list: Retrieves pricing details based on the price list type and code.
Product pricing
For more details on product detail, please refer to the documentation Retriving a product details.

Main Success Scenario#

1.
Initial Setup:
The external system system calls Get bulk CSV Export for CATALOG_EXPORT to obtain catalog details.
Once the catalog is known, it calls Get bulk CSV Export for PRODUCTS_CATALOG_EXPORT to retrieve the list of products within the catalog.
The website processes the data, updating its internal product catalog and prices.
2.
Subsequent Updates:
The external system system invokes Get products by Catalog Code with a fromDatetime parameter to get only the updated products.
For each product, it may retrieve additional details such as barcodes Get SKU's barcodes) or pricing (Get product prices.
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 system must first call Get Catalog details by Code to get the list of available catalogs.
Error Handling: If a request fails, the system should retry the request and apply error handling mechanisms to prevent partial updates.

Sequence Diagram#

Code Examples in Node.js#

Fetching Catalog Data and Handling Pagination#

This example demonstrates how to handle pagination and subsequent API calls. The moreRows attribute indicates whether additional pages of data are available.

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 size is too large to process in one go (it is recommended to use border table).
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.
4.
Incremental Updates:
Always store the timestamp of the last successful API call. This timestamp is crucial for the fromDatetime parameter in subsequent requests to retrieve only updated data.
Ensure that the fromDatetime is correctly updated even if some products fail to process.
5.
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 any 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 platform can efficiently integrate with the API and manage large-scale data updates without performance issues or data inconsistencies.
Modified at 2025-10-14 12:49:30
Previous
Defining Product Pricing
Next
Activate product variants and add barcodes to SKUs
Built with