CROP

Vendor Data Overview

Unified schema map showing how parts data from different vendors normalizes into the common IndexedPart interface.

Vendor Data Overview

All vendor part data normalizes into a common IndexedPart interface stored in Elasticsearch. Each vendor provides data through different APIs and formats, but the catalog service transforms everything into a unified shape.

Data Sources

SourceVendor CodesAPIMongoDB Collections
DIS (Dealer Information Systems)NHL, BNS, VNT, MCH, KUH, HOT, HAR, KIN, MARDIS REST APIparts_{vendor_code}
K&M TireKMTK&M REST APIparts_kmt

IndexedPart Interface

The common shape used across the search index and website:

interface IndexedPart {
  partNumber: string;          // Unique part identifier
  title: string;               // Display name
  description: string;         // Detailed description
  manufacturer: string;        // Vendor code (e.g., "BNS", "KMT")
  manufacturerName: string;    // Full name (e.g., "Briggs & Stratton")
  category: string;            // Product category
  price: number;               // Unit price
  currency: string;            // Currency code
  inStock: boolean;            // Availability
  imageUrl?: string;           // Primary image URL
  images?: string[];           // Additional image URLs
  slug: string;                // URL-friendly identifier
  weight?: number;
  dimensions?: string;
  crossReferences?: string[];  // Compatible part numbers from other vendors
}

Normalization Flow

External API (DIS/K&M) → Catalog Service transformer → MongoDB (raw) → Sync job → Elasticsearch (IndexedPart)

Each vendor has a registered transformer in the catalog service that maps vendor-specific fields to the IndexedPart interface. See individual vendor pages for field mappings.

On this page