NAV

Overview

Introduction

Welcome to the DDX Export Implementation Guide. This guide describes the product data files that Distributor Data Solutions (DDS) delivers, and how to load them into your own systems.

DDS offers three standard export formats:

Format Best for Shape
JSON Developers loading a PIM, search index or e-commerce platform One product per line, nested objects
Multi CSV Spreadsheet, database and ETL imports One file per data type, joined on product_id
XML Systems that expect XML One <product> element per product

Every format carries the core product data: item details, pricing, images, documents, specifications, facets and packaging. JSON is the most complete. Some data, such as ETIM classification, related products and the full price list, is only in some formats; each section says what its format leaves out. Each section shows a sample of the data in the dark panel to the right, with a field table alongside.

Conventions

These rules apply to every format:

JSON Implementation Guide

JSON Files

One JSON object per line

{"product_id":7038860,"manufacturer_catalog_number":"2522-20", ... }
{"product_id":7038861,"manufacturer_catalog_number":"2522-21XC", ... }
{"product_id":7038862,"manufacturer_catalog_number":"2532-20", ... }

A delivered JSON export

files/
  part-00000-6572157f-2ecc-4251-a931-23e234280e71-c000.json
  part-00000-6572157f-2ecc-4251-a931-23e234280e71-c001.json
  part-00000-6572157f-2ecc-4251-a931-23e234280e71-c002.json
_SUCCESS

One product per line

Each file is in JSON Lines format: every line is a complete JSON object describing one product. The file as a whole is not a JSON array, so read it line by line rather than parsing it in one go.

Multi-part files

A JSON export is split into several part files in a files/ folder. Each part holds at most 5,000 products. File names follow the pattern part-00000-{run id}-c{nnn}.json, where the run id is a unique id for that export run. All parts from the same run share it, and c000, c001, c002… number the parts. You may also see an empty _SUCCESS file inside files/; ignore it. Process every .json file in the folder. The order of the parts has no meaning.

Missing values

Fields with no value are left out of the object entirely rather than written as null. For example, primary_image is absent when a product has no image, and alternate_images is absent when there are none. Lists such as facets, certifications and images_360 are present as an empty list [] when there is nothing to report.

Item Details

Item Details (nested objects shortened, values illustrative)

{
    "product_id": 7038860,
    "distributor_product_id": "1398103",
    "distributor_attributes": [
        { "attribute_key": "distributor_category", "attribute_value": "RPL30090600", "weight": 0 }
    ],
    "manufacturer_catalog_number": "2522-20",
    "upc": "045242519958",
    "unspsc": "23241507",
    "name": "M12 FUEL 3\" Compact Cut Off Tool",
    "short_description": "M12 FUEL 3\" Compact Cut Off Tool",
    "long_description": "The M12 FUEL 3 in. Compact Cut Off Tool delivers multi-material cutting capability in an ergonomic package...",
    "manufacturer": { "id": 4, "name": "Milwaukee Tool", "parent_id": 19959, "parent_name": "Techtronic Industries", "image": { ... } },
    "country_of_origin": "MEX",
    "family_code": "M12FUEL",
    "preferred_product": "X",
    "rohs_indicator": "Compliant",
    "prop_65_message": "WARNING: This product can expose you to chemicals including lead...",
    "height": "3.15",
    "height_uom": "in",
    "length": "7.13",
    "length_uom": "in",
    "width": "4.72",
    "width_uom": "in",
    "region_id": "USA",
    "currency": "USD",
    "list_price": 248.0000,
    "price_effective_date": "2026-10-07",
    "next_list_price": 259.0000,
    "next_effective_date": "2027-01-04",
    "order_min": 1,
    "order_increment": 1,
    "units_qty": 1,
    "units_uom": "each",
    "discount_code": "DE3D",
    "tariff_code": "8467220020",
    "stocked": "Y",
    "standard_lead_time": "3",
    "product_life_cycle_status": "Active",
    "business_group": "Power Tools",
    "language_code": "en",
    "prices": [ { "region_id": "USA", "list_price": 248.0000, "imap": 149.0, ... } ],
    "primary_image": { "name": "2522-20_1_Web.jpg", "uri": "https://media.distributordatasolutions.com/...-large.png", "sizes": { ... } },
    "alternate_images": [ { "name": "2522-20_2_Web.jpg", ... } ],
    "images_360": [ { "cols": "24", "rows": "1", "iframe_url": "https://media.distributordatasolutions.com/assets/magic360/viewer.html?...", ... } ],
    "primary_spec_sheet": { "name": "2522-20-spec.pdf", "display_name": "Spec Sheet", ... },
    "safety_data_sheet": { "name": "M12-battery-SDS.pdf", "display_name": "Safety Data Sheet", ... },
    "downloads": [ { "group_name": "Downloads", "group_items": [ { "display_name": "Warranty Document", ... } ] } ],
    "videos": [ { "group_name": "Videos", "group_items": [ { "display_name": "Product Video", ... } ] } ],
    "packages": [ { "gtin": "10045242519955", "qty": 10, "qty_uom": "CASE", ... } ],
    "facets": [ { "data_key": "blade_diameter", "name": "Blade Diameter", "values": [ ... ] } ],
    "certifications": [ { "name": "Blade Diameter", "value": "3 in", "type": "Physical Dimensions & Form Factor" }, ... ],
    "features": [ { "group_name": "Features", "group_items": [ { "value": "20,000 RPM for fast and accurate cutting performance", ... } ] } ],
    "specifications": [ { "group_name": "Specifications", "group_items": [ { "name": "Blade Diameter", "value": "3 in", ... } ] } ],
    "etim": { "class_code": "EC000093", "class_description": "Angle grinder (battery)", "version": 7, ... },
    "categories": [ { "category_id": 690237, "name": "Power Tools & Accessories", ... } ],
    "manufacturer_categories": [ { "category_id": 2989154, "name": "Tools Cutting", ... } ],
    "related_products": { "accessory": ["48-11-2420", "49-94-3000"] },
    "dds_normalized_attributes": [ { "manufacturer_attribute_name": "Blade diameter", "manufacturer_value": "3 in.", "highly_normalized": { ... }, "detail_normalized": { ... } } ]
}

Every top-level field that can appear on a product object is listed below. Fields with no data are left out, so a given product will only have some of them. Where a field holds an object or a list, its Data Type links to the section that describes it.

Field Name Data Type Description
product_id Integer DDS unique identifier for the product
distributor_product_id String Your identifier for the product. Only present when your export is matched to your product list
distributor_attributes List of Distributor Attribute Objects Values from your own product file, each with attribute_key, attribute_value and weight. Only present when your export is matched to your product list
manufacturer_catalog_number String Uniquely identifies the product within its manufacturer
upc String UPC-A: 12 digits, can have leading zeros
unspsc String United Nations Standard Products and Services Code
name String Product name. Falls back to short_description when the manufacturer gives no name
short_description String Brief description of the product (often the same as the name)
long_description String Longer description of the product
manufacturer Manufacturer Object The manufacturer, its parent company and its logo
country_of_origin String Country where the product was manufactured
family_code String Product group or family, defined by the manufacturer
preferred_product String X when the manufacturer marks the product as preferred
rohs_indicator String Restriction of Hazardous Substances (RoHS) compliance
prop_65_message String California Proposition 65 warning text
height, length, width String Product dimensions
height_uom, length_uom, width_uom String Unit of measure for each dimension
region_id String Region of the current price, for example USA. See Pricing
currency String Currency of the current price
list_price Decimal Current list price
price_effective_date Date Date the current list price took effect (YYYY-MM-DD)
next_list_price Decimal Next scheduled list price, when the manufacturer has announced one
next_effective_date Date Date the next list price takes effect
order_min Integer Minimum order quantity
order_increment Integer Quantity the product must be ordered in multiples of
units_qty, units_uom Integer, String Number of units the price covers, and their unit of measure
discount_code String Manufacturer discount code
tariff_code String Harmonized tariff code
stocked String Manufacturer stocking status
standard_lead_time String Standard lead time
product_life_cycle_status String Life-cycle status, for example Active or Discontinued
business_group String Manufacturer business group
language_code String Language of the price record
prices List of Price Objects Every price record for the region, including fields not lifted to the top level such as msrp and imap
primary_image Image Object Main product image
alternate_images List of Image Objects Additional images, sorted by weight
images_360 List of 360 Image Objects 360-degree spin images
primary_spec_sheet Simple File Object Main specification sheet. Also listed in downloads
safety_data_sheet Simple File Object Safety data sheet (SDS). Also listed in downloads
downloads List of File Groups Downloadable documents, in groups
videos List of File Groups Videos, in groups
packages List of Package Objects Packaging levels such as each, box and case
facets List of Facet Objects Normalized, filterable attributes
certifications List of Certification Objects Certifications and compliance attributes
features List of Attribute Groups Marketing features (bullet points)
specifications List of Attribute Groups Technical specifications (name/value pairs)
etim ETIM Object ETIM classification
categories List of Category Objects DDS or distributor categories
manufacturer_categories List of Category Objects Categories supplied by the manufacturer
related_products Related Products Object Related, accessory and replacement products
dds_normalized_attributes List of Normalized Attribute Objects DDS normalized attributes. Only present for subscribers

Pricing

Pricing

{
    "region_id": "USA",
    "currency": "USD",
    "list_price": 248.0000,
    "price_effective_date": "2026-10-07",
    "next_list_price": 259.0000,
    "next_effective_date": "2027-01-04",
    "order_min": 1,
    "units_qty": 1,
    "units_uom": "each",
    "tariff_code": "8467220020",
    "product_life_cycle_status": "Active",
    "prices": [
        {
            "region_id": "USA",
            "currency": "USD",
            "list_price": 248.0000,
            "price_effective_date": "2026-10-07",
            "imap": 149.0,
            "order_min": 1,
            "order_min_uom": "EA"
        }
    ]
}

A manufacturer can supply several price records for a product, for different regions and effective dates. DDS picks one to flatten onto the product object:

Every record for the region is also delivered in prices. Use it for fields that are not lifted to the top level, such as msrp, imap, price_group_code or price_expiration_date. Multi CSV names two of these msrp_price and imap_price.

Price Object

Each entry in prices can contain any of these fields:

Field Name Data Type Description
region_id, currency, list_price, price_effective_date Same as the top-level fields
price_expiration_date Date Date the price stops applying
order_min, order_min_uom, order_increment Order quantity rules
units_qty, units_uom Integer, String Units the price covers
msrp Decimal Manufacturer's suggested retail price
imap Decimal Internet minimum advertised price
trade_price, user_price, dist_price Decimal Additional manufacturer price levels
discount_code, sub_discount_code, price_group_code String Manufacturer pricing codes
country_of_origin, tariff_code, export_commerce_control_number String Trade classification
stocked, standard_lead_time, product_life_cycle_status, business_group, language_code String Same as the top-level fields

Images and Sizes

Image Object

"primary_image": {
    "name": "2522-20_1_Web.jpg",
    "display_name": "primary_image",
    "mime_type": "image/png",
    "weight": 0,
    "uri": "https://media.distributordatasolutions.com/xlsx_3M_synd/2021q1/images/large/8ee6ad83816f3f3f79d30b109bf570283b4a4953-large.png",
    "source_url": "https://www.example-manufacturer.com/images/2522-20_1_Web.jpg",
    "sizes": {
        "thumb": {
            "length": "3645",
            "uri": "https://media.distributordatasolutions.com/xlsx_3M_synd/2021q1/images/thumbnails/8ee6ad83816f3f3f79d30b109bf570283b4a4953-thumb.png"
        },
        "small": {
            "length": "35592",
            "uri": "https://media.distributordatasolutions.com/xlsx_3M_synd/2021q1/images/small/8ee6ad83816f3f3f79d30b109bf570283b4a4953-small.png"
        },
        "medium": {
            "length": "125059",
            "uri": "https://media.distributordatasolutions.com/xlsx_3M_synd/2021q1/images/medium/8ee6ad83816f3f3f79d30b109bf570283b4a4953-medium.png"
        },
        "large": {
            "length": "458701",
            "uri": "https://media.distributordatasolutions.com/xlsx_3M_synd/2021q1/images/large/8ee6ad83816f3f3f79d30b109bf570283b4a4953-large.png"
        },
        "native": {
            "length": "1601514",
            "uri": "https://media.distributordatasolutions.com/xlsx_3M_synd/2021q1/images/native/8ee6ad83816f3f3f79d30b109bf570283b4a4953-native.png"
        }
    }
}

Every image comes in several sizes so you can pick the right one for each place it appears. All sizes are hosted on the DDS CDN.

Image Object

Field Name Data Type Description
name String Original file name. Useful as the file name in a Content-Disposition header
display_name String Label for the image
mime_type String MIME type of the hosted image
weight Integer Sort order. Lower numbers come first
uri String URL of the large image on the DDS CDN
source_url String Where DDS originally obtained the image, when known
manufacturer_file_id String Manufacturer's identifier for the file, when supplied
sizes Sizes Object The image in each available size

Sizes Object

Field Name Data Type Description
thumb Size Object Small thumbnail (about 64 px), cropped to a square. For search results and lists
small Size Object Up to 256 × 256 px. For search results, or a small product-page image
medium Size Object Up to 512 × 512 px. For the main product-page image
large Size Object Up to 1024 × 1024 px. For a zoomed view
native Size Object Original size from the manufacturer. Varies

"Up to" sizes keep the image's original aspect ratio. The thumbnail is cropped to a square.

Size Object

Field Name Data Type Description
uri String URL of the image at this size on the DDS CDN
length String File size in bytes (not a dimension). Not always present

Spec Sheet and SDS

Simple File Object

"primary_spec_sheet": {
    "name": "SB_Scouring Pads_HACCP INTL_Rev B.pdf",
    "display_name": "Spec Sheet",
    "mime_type": "application/pdf",
    "weight": 0,
    "uri": "https://media.distributordatasolutions.com/xlsx_3M_synd/2021q1/documents/608f424ece035b3af473d03030b0412d7185c9fb.pdf"
}

primary_spec_sheet and safety_data_sheet use the same simple file format. Both files are also listed in downloads. They are repeated at the top level so they are easy to find.

Field Name Data Type Description
name String File name
display_name String Label for the file, as supplied by the manufacturer, for example "Spec Sheet"
mime_type String Usually application/pdf
weight Integer Sort order
uri String URL of the file on the DDS CDN

360 Images

360 Images

"images_360": [
    {
        "cols": "24",
        "rows": "1",
        "initial_image": "https://media.distributordatasolutions.com/xlsx_3M_synd/2021q1/360_images/medium/483ef5ff38ca15b34cd7debe629412e4583b5860-r01-c01-medium.png",
        "initial_thumb": "https://media.distributordatasolutions.com/xlsx_3M_synd/2021q1/360_images/thumbnails/483ef5ff38ca15b34cd7debe629412e4583b5860-r01-c01-thumb.png",
        "filename": "483ef5ff38ca15b34cd7debe629412e4583b5860-r{row}-c{col}-medium.png",
        "filename_large": "483ef5ff38ca15b34cd7debe629412e4583b5860-r{row}-c{col}-native.png",
        "format": "row-column",
        "iframe_url": "https://media.distributordatasolutions.com/assets/magic360/viewer.html?initial=/xlsx_3M_synd/2021q1/360_images/medium/483ef5ff38ca15b34cd7debe629412e4583b5860-r01-c01-medium.png&filename=483ef5ff38ca15b34cd7debe629412e4583b5860-r{row}-c{col}-medium.png&rows=1&cols=24",
        "display_name": "5b953d11faff491882675e9914aea6bf 360 Image"
    }
]

Embedding the viewer

<iframe src="https://media.distributordatasolutions.com/assets/magic360/viewer.html?initial=/xlsx_3M_synd/2021q1/360_images/medium/483ef5ff38ca15b34cd7debe629412e4583b5860-r01-c01-medium.png&filename=483ef5ff38ca15b34cd7debe629412e4583b5860-r{row}-c{col}-medium.png&rows=1&cols=24"></iframe>

Some products have 360-degree spin images. The simplest way to show one is to use iframe_url as the src of an <iframe>. That loads a ready-made DDS viewer. In JSON, initial_image and initial_thumb are full URLs; Multi CSV and XML give them as paths relative to the CDN.

To build your own viewer, use the frame files instead. Each frame's file name follows filename, with {row} and {col} replaced by two-digit numbers (r01-c01, r01-c02…).

360 Image Object

Field Name Data Type Description
cols String Number of frames around the product
rows String Number of vertical rows of frames (usually 1)
initial_image String URL of the first frame, medium size
initial_thumb String URL of the first frame, thumbnail size
filename String File-name pattern for medium frames
filename_large String File-name pattern for full-size (native) frames
format String Always row-column
iframe_url String URL of the hosted 360 viewer for this product
display_name String Label for the 360 image

Packages

Packages

"packages": [
    {
        "code": "58bd53eef0824020bcd8d611f61fd5fd",
        "gtin": "10045242519955",
        "qty": 6,
        "qty_uom": "CASE",
        "gross_weight": 28.55,
        "gross_weight_uom": "lbs",
        "pkg_length": 24.4,
        "pkg_length_uom": "in",
        "pkg_height": 10.7,
        "pkg_height_uom": "in",
        "pkg_width": 11.7,
        "pkg_width_uom": "in",
        "description": "Case"
    }
]

Each package object describes one packaging level (each, inner pack, case, pallet). Many packaging fields are optional and are left out when the manufacturer does not supply them.

Package Object

Field Name Data Type Description
code String DDS identifier for the package
parent_code String code of the package this one is contained in, when known
gtin String Usually GTIN-14, but can be any GTIN. See gtin.info
sub_gtin String GTIN of the smaller package inside this one
sub_qty Integer Number of smaller packages inside this one
qty Integer Quantity in the package
qty_uom String Unit of measure for qty
gross_weight, gross_weight_uom Decimal, String Package weight and its unit
pkg_length, pkg_length_uom Decimal, String Package length and its unit
pkg_height, pkg_height_uom Decimal, String Package height and its unit
pkg_width, pkg_width_uom Decimal, String Package width and its unit
pkg_volume, pkg_volume_uom Decimal, String Package volume and its unit
description String Description of the package, for example "Case"
returnable String Whether the package is returnable

Manufacturer

Manufacturer

"manufacturer": {
    "id": 33,
    "name": "Pass & Seymour",
    "parent_id": 32,
    "parent_name": "Legrand",
    "image": {
        "name": "primary_image",
        "mime_type": "image/png",
        "weight": 30,
        "uri": "https://media.distributordatasolutions.com/ManufacturerLogos/Pass+%26+Seymour/_sized/primary_logo-large.png",
        "sizes": {
            "thumb": { "uri": "https://media.distributordatasolutions.com/ManufacturerLogos/Pass+%26+Seymour/_sized/primary_logo-thumb.png" },
            "small": { "uri": "https://media.distributordatasolutions.com/ManufacturerLogos/Pass+%26+Seymour/_sized/primary_logo-small.png" },
            "medium": { "uri": "https://media.distributordatasolutions.com/ManufacturerLogos/Pass+%26+Seymour/_sized/primary_logo-medium.png" },
            "large": { "uri": "https://media.distributordatasolutions.com/ManufacturerLogos/Pass+%26+Seymour/_sized/primary_logo-large.png" },
            "native": { "uri": "https://media.distributordatasolutions.com/ManufacturerLogos/Pass+%26+Seymour/_sized/primary_logo-native.png" }
        }
    }
}

The manufacturer of the product, its parent company where there is one, and the manufacturer's logo.

Field Name Data Type Description
id Integer DDS identifier for the manufacturer
name String Manufacturer name
parent_id Integer DDS identifier of the parent company, when there is one
parent_name String Name of the parent company, when there is one
image Image Object Manufacturer logo. Logo sizes carry uri only, and a size can be empty

Categories

Categories

"manufacturer_categories": [
    {
        "category_id": 2334443,
        "code": "a7335bc27671df5fea6b2f004e0e3637",
        "name": "Fiber Optic Systems"
    },
    {
        "category_id": 2334497,
        "code": "3960d5798a46e3a83f964ceac1728c1f",
        "name": "Fiber Optic Cable Assemblies",
        "parent_id": 2334443
    }
]
"categories": [
    {
        "category_id": 690156,
        "code": "690156",
        "name": "Tools & Hardware",
        "is_ai_generated": 1
    },
    {
        "category_id": 690237,
        "code": "690237",
        "name": "Power Tools & Accessories",
        "parent_id": 690156,
        "is_ai_generated": 1
    }
]

Products can carry two category trees:

Each list holds every level of the product's branch. Link levels together with parent_id. The top level has no parent_id.

Category Object

Field Name Data Type Description
category_id Integer Unique identifier for the category
parent_id Integer category_id of the parent category. Absent for top-level categories
code String Code that uniquely identifies the category
name String Category name
source_id, source_parent_id String Distributor taxonomy only: your own identifiers for the category and its parent
is_ai_generated Integer Distributor categories only: 1 when the category was assigned by AI. Absent otherwise. Never present in manufacturer_categories

Facets

Facets

"facets": [
    {
        "data_key": "blade_diameter",
        "name": "Blade Diameter",
        "values": [
            {
                "value": "3",
                "value_with_uom": "3 inches",
                "uom_unit": "inch",
                "uom_unit_plural": "inches",
                "uom_abbreviation": "in",
                "uom_abbreviation_plural": "in"
            }
        ]
    },
    {
        "data_key": "material",
        "name": "Material",
        "values": [
            { "value": "ABS", "value_with_uom": "ABS" },
            { "value": "Plastic", "value_with_uom": "Plastic" }
        ]
    }
]

Facets are normalized, filterable attributes curated by the DDS data team. The same facet (data_key) means the same thing across every manufacturer, and units of measure are split from the value. That makes facets a good fit for search filters and comparison tables.

A facet can have several values, for example a product that comes in more than one color. Facets are sorted by data_key, and values are sorted by value.

Facet Object

Field Name Data Type Description
data_key String Stable identifier for the facet
name String Display name
values List of Facet Value Objects One or more values

Facet Value Object

Field Name Data Type Description
value String Value without its unit of measure
value_with_uom String Value with its unit, pluralized correctly, for display
uom_unit String Unit of measure, singular. Absent for unitless facets
uom_unit_plural String Unit of measure, plural
uom_abbreviation String Unit abbreviation, singular
uom_abbreviation_plural String Unit abbreviation, plural

Certifications

Certifications

"certifications": [
    {
        "name": "Drill Hole Distance",
        "value": "466 mm",
        "type": "Physical Dimensions & Form Factor"
    },
    {
        "name": "Model Type",
        "value": "Special profile",
        "type": "Product Identification & Catalog Info"
    },
    {
        "name": "Material Thickness",
        "value": "2.5 mm",
        "type": "Construction & Materials"
    }
]

Certifications are name/value attributes that DDS has classified under a general type. Types seen in current exports include:

The list of types can grow, so do not treat it as a fixed enumeration.

Field Name Data Type Description
name String Attribute name
value String Attribute value
type String General type the attribute is classified under

Features and Specifications

Features and Specifications

"specifications": [
    {
        "group_name": "Busbar Cover Data",
        "group_items": [
            {
                "name": "Busbar Cover and Shroud",
                "value": "Individual Busbar Covers (for 10 mm Busbar)",
                "weight": 10
            }
        ]
    }
],
"features": [
    {
        "group_name": "Features",
        "group_items": [
            { "value": "Internal flanges provide solid, twist-resistant shaft anchor", "weight": 10 },
            { "value": "Cushion-Grip handle allows for greater torque and comfort", "weight": 20 }
        ]
    },
    {
        "group_name": "Warnings",
        "group_items": [
            { "value": "NOT insulated. Will NOT protect against electrical shock.", "weight": 10 }
        ]
    }
]

Features and specifications come as the manufacturer supplied them, in named groups. Manufacturers often split their data into sections, and the group name keeps that context.

Items within a group are sorted by weight.

Attribute Group

Field Name Data Type Description
group_name String Display name of the group
group_items List of Attribute Objects The attributes in the group

Attribute Object

Field Name Data Type Description
name String Attribute name. Specifications only
value String Attribute value
weight Integer Sort order

Downloads and Videos

Downloads and Videos

"downloads": [
    {
        "group_name": "Manuals",
        "group_items": [
            {
                "name": "22d-qs001_-en-p.pdf",
                "display_name": "Quick Start Manual",
                "mime_type": "application/pdf",
                "uri": "https://media.distributordatasolutions.com/AB-Symmetrix/2018q2/495d211239c5cc2cad89c4b2a4a1562ee0de50b4.pdf",
                "ext_hosted": 0,
                "weight": 10,
                "locale": "en-US"
            }
        ]
    }
],
"videos": [
    {
        "group_name": "Videos",
        "group_items": [
            {
                "name": "Installation Video",
                "display_name": "Product Video",
                "mime_type": "text/html",
                "uri": "https://www.youtube.com/embed/JXzxHWPe2kA",
                "ext_hosted": 1,
                "weight": 10,
                "locale": "en-US",
                "description": "Step-by-step installation walkthrough",
                "duration": "7 m 20 s"
            }
        ]
    }
]

Downloads (documents such as manuals, catalogs and certificates) and videos are delivered in named groups, like features and specifications. Files within a group are sorted by weight.

When ext_hosted is 0, the file is hosted on the DDS CDN. When it is 1, the file is hosted elsewhere, typically a YouTube or Vimeo embed URL that you can use as an <iframe> source.

File Group

Field Name Data Type Description
group_name String Display name of the group
group_items List of File Objects The files in the group

File Object

Field Name Data Type Description
name String File name
display_name String Human-readable label for the file
mime_type String MIME type of the file
uri String URL of the file
ext_hosted Integer 1 if the file is hosted outside DDS, otherwise 0
weight Integer Sort order
locale String Language of the file, for example en-US
description String Longer description of the file
duration String Videos: running time, for example 7 m 20 s. Downloads: when present, the file size in bytes
manufacturer_file_id String Manufacturer's identifier for the file, when supplied

ETIM

ETIM

"etim": {
    "group_code": "EG000011",
    "group_description": "Cabinet enclosures",
    "class_code": "EC002625",
    "class_description": "Mounting accessories (switchgear cabinet)",
    "version": 7,
    "features": [
        {
            "feature_code": "EF000008",
            "feature_name": "Width",
            "value_string": "930.00",
            "unit_code": "EU570448",
            "unit_name": "Millimetre"
        },
        {
            "feature_code": "EF000215",
            "feature_name": "Type of accessory/spare part",
            "value_code": "EV000154"
        }
    ]
}

ETIM is an international standard for classifying technical products. When a product has been classified, etim holds its group and class, plus a list of feature values. Exports carry one ETIM version, version 7 unless your export is set up otherwise.

ETIM Object

Field Name Data Type Description
group_code String ETIM group the class belongs to
group_description String Name of the group
class_code String ETIM class of the product
class_description String Name of the class
version Integer ETIM version used to classify the product
features List of ETIM Feature Objects Feature values

ETIM Feature Object

Field Name Data Type Description
feature_code String ETIM feature code
feature_name String Name of the feature
value_code String ETIM value code, for alphanumeric features
value_string String Value, for numeric, logical and range features
unit_code String ETIM unit code
unit_name String Name of the unit

DDS Normalized Attributes

DDS Normalized Attributes

"dds_normalized_attributes": [
    {
        "manufacturer_attribute_name": "Weight",
        "manufacturer_value": "1.422000000 lbs",
        "highly_normalized": {
            "name": "Weight",
            "normalized_values": [
                { "name": "Weight", "value": "1.422", "uom_unit": "lb", "value_with_uom": "1.422 lb" }
            ]
        },
        "detail_normalized": {
            "name": "Weight",
            "normalized_value": "1.422 lbs"
        }
    },
    {
        "manufacturer_attribute_name": "Surface protection",
        "manufacturer_value": "Galvanic/electrolytic zinc plated",
        "highly_normalized": {
            "name": "Surface Protection",
            "normalized_values": [
                { "name": "Surface Protection", "value": "Galvanic Zinc-Plated", "uom_unit": "", "value_with_uom": "Galvanic Zinc-Plated" },
                { "name": "Surface Protection", "value": "Electrolytic Zinc-Plated", "uom_unit": "", "value_with_uom": "Electrolytic Zinc-Plated" }
            ]
        },
        "detail_normalized": {
            "name": "Surface Protection",
            "normalized_value": "Galvanic Zinc-Plated, Electrolytic Zinc-Plated"
        }
    }
]

DDS normalized attributes take each manufacturer specification and give it a consistent name and value at two levels:

Normalized Attribute Object

Field Name Data Type Description
manufacturer_attribute_name String Attribute name as supplied by the manufacturer. Matches a specification name
manufacturer_value String Value as supplied by the manufacturer. Matches a specification value
highly_normalized Highly Normalized Object Standard name and values
detail_normalized Detail Normalized Object Standard name and display value

Highly Normalized Object

Field Name Data Type Description
name String Standard attribute name
normalized_values List of Normalized Value Objects Usually one value. More than one when the manufacturer's value is a list

Normalized Value Object

Field Name Data Type Description
name String Standard attribute name (same as the parent name)
value String Normalized value without its unit
uom_unit String Unit of measure. An empty string when the value has no unit
value_with_uom String Value and unit together, for display

Detail Normalized Object

Field Name Data Type Description
name String Standard attribute name
normalized_value String Cleaned-up value for display

Related Products

"related_products": {
    "accessory": ["EWF172", "97446C"],
    "related": ["LZS8S", "LZS8WSSK"],
    "replaced_by": ["2522-21XC"]
}

related_products links a product to others from the same manufacturer. Each key is a relationship type, and its value is a list of manufacturer catalog numbers. Only the relationship types that have data are present. Common types are related, accessory, compatible, cross_sell, up_sell, spare_part, replaces and replaced_by.

Multi CSV Implementation Guide

Multi CSV Files

A delivered Multi CSV export

items.csv
alternate-images.csv
features.csv
specifications.csv
downloads.csv
videos.csv
packaging.csv
manufacturer-categories.csv
facets.csv
facet-keys.csv
image360.csv
manufacturer.csv
_SUCCESS

The Multi CSV export splits product data across several files, one per type of data:

File One row per Contents
items.csv product Item details, pricing, primary image and spec sheet
alternate-images.csv image Additional product images
features.csv feature Marketing features
specifications.csv specification Technical specifications
downloads.csv document Downloadable documents
videos.csv video Product videos
packaging.csv package level Packaging levels and GTINs
manufacturer-categories.csv category level Manufacturer taxonomy
facets.csv facet value Normalized, filterable attributes
facet-keys.csv facet Facets each product has
image360.csv 360 image 360-degree spin images
manufacturer.csv manufacturer Manufacturer, parent company and logo

How the files fit together

items.csv has exactly one row per product. The other product files can have many rows per product: a product with five downloads has five rows in downloads.csv. Join them back to items.csv on the first column, product_id.

manufacturer.csv is the exception: it has one row per manufacturer, and its first column holds the manufacturer ID. Join it to items.csv on manufacturer_name. See Manufacturer.

Splitting the data this way means there are no numbered columns such as document1, document2…, no limit on how many images or documents a product can have, and room for useful detail on each item, such as a document's MIME type and display name.

CSV format

Our files follow RFC 4180. Use these settings in your CSV reader:

Setting Value Notes
Header Yes Every file starts with a header row. Read columns by name rather than position
Delimiter , Comma
Text qualifier " Values are wrapped in double quotes only when needed: when they contain a comma, a double quote or a line break
Escape character " A double quote inside a value is doubled ("")
Encoding UTF-8
Empty values Treat an empty field and "" the same: no value

Each data type is normally delivered as a single file. A very large file may be split into numbered parts (items-1.csv, items-2.csv…). Process every part.

Item Details

items.csv

product_id,manufacturer_catalog_number,name,upc,manufacturer_name,product_title,long_description,short_description,...,region_id,list_price,...,primary_image_uri,...
61766,YHO-125,Overhead Compression Tap,781810139059,Burndy,,"Wide range, universal figure H shaped aluminum connector...",Overhead Compression Tap,...,USA,12.34,...,https://media.distributordatasolutions.com/...-large.png,...

Full column list, in order

product_id,manufacturer_catalog_number,name,upc,manufacturer_name,
product_title,long_description,short_description,invoice_description,
rohs_indicator,family_code,preferred_product,length,length_uom,width,
width_uom,height,height_uom,weight,weight_uom,sub_brand,custom_keywords,
prop_65_message,ean,upc_11,retail_flag,country_of_origin,
abc_classification,hazardous_material,manufacturer_product_group,
region_id,list_price,units_qty,units_uom,price_country_of_origin,
order_min,order_min_uom,order_increment,price_effective_date,
price_expiration_date,currency,tariff_code,stocked,discount_code,
price_group_code,sub_discount_code,standard_lead_time,
export_commerce_control_number,business_group,product_life_cycle_status,
language_code,tech_segment,next_effective_date,next_list_price,
trade_price,user_price,dist_price,imap_price,msrp_price,
primary_image_uri,primary_image_name,primary_image_display_name,
primary_image_mime_type,primary_image_thumb_uri,primary_image_small_uri,
primary_image_medium_uri,primary_image_large_uri,primary_image_native_uri,
primary_spec_sheet_uri,primary_spec_sheet_name,
primary_spec_sheet_display_name,primary_spec_sheet_mime_type,
safety_data_sheet_uri,safety_data_sheet_name,
safety_data_sheet_display_name,safety_data_sheet_mime_type

One row per product.

Identity and descriptions

Field Name Data Type Description
product_id Integer DDS unique identifier for the product
manufacturer_catalog_number String Uniquely identifies the product within its manufacturer
name String Product name
upc String UPC-A: 12 digits, can have leading zeros
manufacturer_name String Manufacturer of the product
product_title String Product title, when the manufacturer supplies one
short_description String Brief description of the product
long_description String Longer description of the product
invoice_description String Manufacturer's description for invoices and order sheets
rohs_indicator String RoHS compliance
family_code String Product group or family, defined by the manufacturer
preferred_product String X when the manufacturer marks the product as preferred
length, width, height, weight Decimal Product dimensions and weight
length_uom, width_uom, height_uom, weight_uom String Unit of measure for each
sub_brand String Manufacturer sub-brand
custom_keywords String Manufacturer search keywords
prop_65_message String California Proposition 65 warning text
ean String European Article Number
upc_11 String 11-digit UPC
retail_flag String Manufacturer retail flag
country_of_origin String Country where the product was manufactured
abc_classification String Manufacturer ABC (sales velocity) classification
hazardous_material String Hazardous material indicator
manufacturer_product_group String Manufacturer's product group

Pricing

Pricing columns come from the product's current price in your export's price region (USA unless your export is set up otherwise).

Field Name Data Type Description
region_id String Region the price applies to
list_price Decimal List price
currency String Currency of the price
units_qty, units_uom Integer, String Number of units the price covers, and their unit
price_country_of_origin String Country of origin on the price record
order_min, order_min_uom Integer, String Minimum order quantity and its unit
order_increment Integer Quantity the product must be ordered in multiples of
price_effective_date Date Date the price took effect (YYYY-MM-DD)
price_expiration_date Date Date the price stops applying
next_list_price, next_effective_date Decimal, Date Next scheduled list price and when it takes effect
tariff_code String Harmonized tariff code
stocked String Manufacturer stocking status
discount_code, sub_discount_code, price_group_code String Manufacturer pricing codes
standard_lead_time String Standard lead time
export_commerce_control_number String Export control classification
business_group String Manufacturer business group
product_life_cycle_status String Life-cycle status, for example Active or Discontinued
language_code String Language of the price record
tech_segment String Manufacturer technology segment
trade_price, user_price, dist_price Decimal Additional manufacturer price levels
imap_price Decimal Internet minimum advertised price
msrp_price Decimal Manufacturer's suggested retail price

Primary image and documents

Field Name Data Type Description
primary_image_uri String URL of the large primary image
primary_image_name String Original file name of the image
primary_image_display_name String Label for the image
primary_image_mime_type String MIME type of the hosted image
primary_image_thumb_uri … primary_image_native_uri String URL of the image in each size. See Image sizes
primary_spec_sheet_uri, primary_spec_sheet_name, primary_spec_sheet_display_name, primary_spec_sheet_mime_type String Main specification sheet. Also listed in downloads.csv
safety_data_sheet_uri, safety_data_sheet_name, safety_data_sheet_display_name, safety_data_sheet_mime_type String Safety data sheet (SDS). Also listed in downloads.csv

Alternate Images

alternate-images.csv

product_id,manufacturer_catalog_number,name,display_name,uri,mime_type,small_uri,medium_uri,large_uri,native_uri
20108475,WEEB-LUG-6.7,BURN_WEEB-LUG-6.7_PRODIMAGE_180DEG_1200.jpg,alternate_image,https://media.distributordatasolutions.com/325/synd_hubbell/large/ceadedd896135704ae6bbded57b6e441b5276ac7-large.png,image/png,https://media.distributordatasolutions.com/325/synd_hubbell/small/ceadedd896135704ae6bbded57b6e441b5276ac7-small.png,https://media.distributordatasolutions.com/325/synd_hubbell/medium/ceadedd896135704ae6bbded57b6e441b5276ac7-medium.png,https://media.distributordatasolutions.com/325/synd_hubbell/large/ceadedd896135704ae6bbded57b6e441b5276ac7-large.png,https://media.distributordatasolutions.com/325/synd_hubbell/native/ceadedd896135704ae6bbded57b6e441b5276ac7-native.png

One row per additional image, in display order. All images are hosted on the DDS CDN.

Field Name Data Type Description
product_id Integer Product the image belongs to
manufacturer_catalog_number String Manufacturer catalog number of the product
name String Original file name of the image
display_name String Label for the image
uri String URL of the large image
mime_type String MIME type of the hosted image
small_uri, medium_uri, large_uri, native_uri String URL of the image in each size

Image sizes

Size Dimensions Good for
thumb Small thumbnail (about 64 px), cropped to a square Search results and lists
small Up to 256 × 256 px Search results, small product-page image
medium Up to 512 × 512 px Main product-page image
large Up to 1024 × 1024 px Zoomed view
native Original size from the manufacturer Full-resolution zoom

"Up to" sizes keep the image's original aspect ratio. The thumbnail is cropped to a square. alternate-images.csv has no thumbnail column; only the primary image has primary_image_thumb_uri.

Features and Specifications

features.csv

product_id,manufacturer_catalog_number,group_name,name,value,weight
2909371,U27D1,Features,,Durable Stainless Steel Material,0
2909371,U27D1,Features,,Corrosion resistant,10

specifications.csv

product_id,manufacturer_catalog_number,group_name,name,value
2909371,U27D1,Specifications,Die Index,14
2909371,U27D1,Specifications,Material,Stainless Steel

Features and specifications come as the manufacturer supplied them, in named groups. Each row is one attribute. group_name keeps the manufacturer's sections.

Field Name Data Type Description
product_id Integer Product the attribute belongs to
manufacturer_catalog_number String Manufacturer catalog number of the product
group_name String Name of the group the attribute belongs to
name String Attribute name. Empty for features
value String Attribute value
weight Integer Features only: sort order

Downloads and Videos

downloads.csv / videos.csv

product_id,manufacturer_catalog_number,group_name,name,display_name,mime_type,uri,ext_hosted,weight,description,duration,embed_html
2909371,U27D1,Downloads,BRDY-U27D1-SPEC-EN.pdf,Spec Sheet,application/pdf,https://media.distributordatasolutions.com/325/synd_hubbell/07efe77d8c58369faeb4a1753cedab06bd896d96.pdf,0,0,,,
62945,PAT750CLI,Videos,Product Video 2,Product Video 2,text/html,https://www.youtube.com/embed/GFPgSdDaHQE,1,10,,,

One row per document or video, in named groups. downloads.csv and videos.csv have the same columns.

When ext_hosted is 0, the file is hosted on the DDS CDN. When it is 1, the file is hosted elsewhere, typically a YouTube or Vimeo embed URL that you can use as an <iframe> source.

Field Name Data Type Description
product_id Integer Product the file belongs to
manufacturer_catalog_number String Manufacturer catalog number of the product
group_name String Name of the group the file belongs to
name String File name
display_name String Human-readable label for the file
mime_type String MIME type of the file
uri String URL of the file
ext_hosted Integer 1 if the file is hosted outside DDS, otherwise 0
weight Integer Sort order
description String Longer description of the file
duration String Always empty in Multi CSV. Video running time is only delivered in JSON and XML
embed_html String Always empty

Packaging

packaging.csv

product_id,manufacturer_catalog_number,gtin,sub_gtin,sub_qty,qty,qty_uom,gross_weight,gross_weight_uom,pkg_length,pkg_length_uom,pkg_height,pkg_height_uom,pkg_width,pkg_width_uom,description,returnable
2909371,U27D1,50781810008060,00781810008065,,1,,0.32,lbs,2.69,in,2.75,in,1.94,in,,

One row per packaging level (each, inner pack, case, pallet).

Field Name Data Type Description
product_id Integer Product the package belongs to
manufacturer_catalog_number String Manufacturer catalog number of the product
gtin String Usually GTIN-14, but can be any GTIN. See gtin.info
sub_gtin String GTIN of the smaller package inside this one
sub_qty Integer Number of smaller packages inside this one
qty Integer Quantity in the package
qty_uom String Unit of measure for qty
gross_weight, gross_weight_uom Decimal, String Package weight and its unit
pkg_length, pkg_length_uom Decimal, String Package length and its unit
pkg_height, pkg_height_uom Decimal, String Package height and its unit
pkg_width, pkg_width_uom Decimal, String Package width and its unit
description String Description of the package, for example "Case"
returnable String Whether the package is returnable

Manufacturer Categories

manufacturer-categories.csv

product_id,manufacturer_catalog_number,category_id,parent_id,code,name
22017267,RC-3X3,1293941,,75a590f43c0627b38b8c3e6f7c557313,Objects
22017267,RC-3X3,1293942,1293941,049e3087778fb9a172b31b19dd442a0e,Cubes
22017267,RC-3X3,1293943,1293942,d0e32a31200e8055acf38eacf420a022,Puzzle Cubes

The manufacturer's own taxonomy, where the manufacturer supplies one. Each row is one level of the product's category branch. Link levels together with parent_id. The top level has an empty parent_id.

Field Name Data Type Description
product_id Integer Product the category belongs to
manufacturer_catalog_number String Manufacturer catalog number of the product
category_id Integer Unique identifier for the category
parent_id Integer category_id of the parent category. Empty for top-level categories
code String Code that uniquely identifies the category
name String Category name

Facets

facets.csv

product_id,name,value,value_with_uom,data_key,uom_unit,uom_unit_plural,uom_abbreviation,uom_abbreviation_plural
99999,Overall Length,25.4,25.4 millimeters,overall_length,millimeter,millimeters,mm,mm
88888,Material,ABS,ABS,material,,,,
88888,Material,Plastic,Plastic,material,,,,

facet-keys.csv

product_id,manufacturer_catalog_number,data_key,name
99999,AB-100,overall_length,Overall Length
88888,CD-200,material,Material

Facets are normalized, filterable attributes curated by the DDS data team. The same facet (data_key) means the same thing across every manufacturer, and units of measure are split from the value.

facets.csv

Field Name Data Type Description
product_id Integer Product the facet value belongs to
name String Display name of the facet
value String Value without its unit of measure
value_with_uom String Value with its unit, pluralized correctly, for display
data_key String Stable identifier for the facet
uom_unit, uom_unit_plural String Unit of measure, singular and plural. Empty for unitless facets
uom_abbreviation, uom_abbreviation_plural String Unit abbreviation, singular and plural

facet-keys.csv

Field Name Data Type Description
product_id Integer Product that has the facet
manufacturer_catalog_number String Manufacturer catalog number of the product
data_key String Stable identifier for the facet
name String Display name of the facet

360 Images

image360.csv

product_id,manufacturer_catalog_number,cols,rows,initial_image,filename,initial_thumb,filename_large,format,iframe_url,display_name
17954343,10031S,24,1,xlsx_southwire/2020q2/360_images/medium/3ac2417883084a414d43c43411417663dc130c81-r01-c01-medium.png,3ac2417883084a414d43c43411417663dc130c81-r{row}-c{col}-medium.png,xlsx_southwire/2020q2/360_images/thumbnails/3ac2417883084a414d43c43411417663dc130c81-r01-c01-thumb.png,3ac2417883084a414d43c43411417663dc130c81-r{row}-c{col}-native.png,row-column,https://media.distributordatasolutions.com/assets/magic360/viewer.html?initial=/xlsx_southwire/2020q2/360_images/medium/3ac2417883084a414d43c43411417663dc130c81-r01-c01-medium.png&filename=3ac2417883084a414d43c43411417663dc130c81-r{row}-c{col}-medium.png&rows=1&cols=24,576703f347b44abb80b1c9d9073d7a88 360 Image

Embedding the viewer

<iframe src="https://media.distributordatasolutions.com/assets/magic360/viewer.html?initial=/xlsx_southwire/2020q2/360_images/medium/3ac2417883084a414d43c43411417663dc130c81-r01-c01-medium.png&filename=3ac2417883084a414d43c43411417663dc130c81-r{row}-c{col}-medium.png&rows=1&cols=24"></iframe>

Some products have 360-degree spin images. The simplest way to show one is to use iframe_url as the src of an <iframe>. That loads a ready-made DDS viewer. Note that initial_image and initial_thumb are paths relative to https://media.distributordatasolutions.com/, not full URLs.

Field Name Data Type Description
product_id Integer Product the 360 image belongs to
manufacturer_catalog_number String Manufacturer catalog number of the product
cols Integer Number of frames around the product
rows Integer Number of vertical rows of frames
initial_image String Path of the first frame, medium size, relative to https://media.distributordatasolutions.com/
filename String File-name pattern for medium frames. {row} and {col} are two-digit numbers
initial_thumb String Path of the first frame, thumbnail size, relative to https://media.distributordatasolutions.com/
filename_large String File-name pattern for full-size (native) frames
format String Always row-column
iframe_url String URL of the hosted 360 viewer for this product
display_name String Label for the 360 image

Manufacturer

manufacturer.csv

product_id,manufacturer_name,parent_manufacturer,manufacturer_logo
17790,CGW Abrasives,,https://media.distributordatasolutions.com/ManufacturerLogos/CGW/_sized/primary_logo-large.png

One row per manufacturer in the export.

Field Name Data Type Description
product_id Integer DDS manufacturer ID
manufacturer_name String Manufacturer name, as in items.csv
parent_manufacturer String Parent company, when there is one
manufacturer_logo String URL of the manufacturer's logo

DDS Normalized Attributes

normalize-attributes.csv

product_id,name,value,uom,value_with_uom
20108475,Size,8.5,mm,8.5 mm
20108475,Material,Stainless Steel,,Stainless Steel

DDS normalized attributes give each manufacturer specification a consistent name, with the value split from its unit. There is one row per attribute value.

Field Name Data Type Description
product_id Integer Product the attribute belongs to
name String Normalized attribute name
value String Normalized value without its unit
uom String Unit of measure, when there is one
value_with_uom String Value and unit together, for display

XML Implementation Guide

XML Files

File structure

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<products>
    <product>...</product>
    <product>...</product>
    <product>...</product>
</products>

An XML export is delivered as a single file, part-00000.xml. It is UTF-8 encoded, with one root <products> element holding one <product> element per product. Exports set up as multi-file are split into numbered part files of up to 25,000 products, each with the same structure; process every .xml file in the folder.

The XML carries most of the data in the JSON export. It does not include the manufacturer object and logo, the full prices list, related products, distributor attributes or DDS normalized attributes, and it has a single category list. Differences in individual fields are noted below.

Missing values

Elements with no value are left out rather than written empty. For example, <packages> is absent when the manufacturer supplies no packaging. A few list elements, such as <categories/> and <certifications/>, are written as an empty element when there is nothing to report.

Repeated elements

Lists are written in one of three shapes:

Shape Used by Example
One wrapper around all items packages, certifications, facets, categories, features, specification and file groups <facets><facet>…</facet><facet>…</facet></facets>
One wrapper per item alternate images, facet values <alternate_images><alternate_image>…</alternate_image></alternate_images> repeated
Repeated element, no inner item 360 images, ETIM features <images_360>…</images_360> repeated

An XML parser that collects every matching element handles all three.

Product

Product

<product>
    <manufacturer_name>Panduit</manufacturer_name>
    <code>9a79d95442b0f01916f4a33a43f65e1a</code>
    <manufacturer_catalog_number>UTP28SP2MGY</manufacturer_catalog_number>
    <name>CU Patch Crd,Cat 6,SD,2m,GY</name>
    <upc>074983960095</upc>
    <price>...</price>
    <primary_image>...</primary_image>
    <alternate_images>...</alternate_images>
    <primary_spec_sheet>...</primary_spec_sheet>
    <packages>...</packages>
    <certifications/>
    <facets>...</facets>
    <categories>...</categories>
    <features>...</features>
    <specifications>...</specifications>
    <downloads>...</downloads>
    <etim>...</etim>
    <long_description>The TX6-28 Cat 6 UTP Patch Cord is a 2-meter...</long_description>
    <short_description>CU Patch Crd,Cat 6,SD,2m,GY</short_description>
    <invoice_description>CU Patch Crd,Cat 6,SD,2m,GY</invoice_description>
    <rohs_indicator>Compliant</rohs_indicator>
    <length>14.3</length>
    <length_uom>Inch</length_uom>
    <sub_brand>Pan-Net</sub_brand>
    <custom_keywords>Patch Cord|Patch cord copper|Data cable</custom_keywords>
    <ean>00074983960095</ean>
    <country_of_origin>MEX, CHN, ROU</country_of_origin>
</product>
Element Data Type Description
manufacturer_name String Manufacturer of the product
code String DDS identifier for the product
manufacturer_catalog_number String Uniquely identifies the product within its manufacturer
name String Product name
upc String UPC-A: 12 digits, can have leading zeros
price Price Current price
primary_image Image Main product image
alternate_images Image (repeated) Additional images
primary_spec_sheet Simple File Main specification sheet
safety_data_sheet Simple File Safety data sheet (SDS)
packages Package list Packaging levels
certifications Certification list Manufacturer certification records. Not the same data as JSON certifications
facets Facet list Normalized, filterable attributes
categories Category list Product categories
images_360 360 Image (repeated) 360-degree spin images
features Feature list Marketing features
specifications Specification groups Technical specifications
downloads File groups Downloadable documents
videos File groups Product videos
etim ETIM ETIM classification

The product's descriptive fields follow as simple text elements:

Element Description
product_title Product title, when the manufacturer supplies one
long_description Longer description of the product
short_description Brief description of the product
invoice_description Manufacturer's description for invoices and order sheets
rohs_indicator RoHS compliance
family_code Product group or family, defined by the manufacturer
preferred_product X when the manufacturer marks the product as preferred
length, width, height, depth, weight Product dimensions and weight
length_uom, width_uom, height_uom, depth_uom, weight_uom Unit of measure for each
sub_brand Manufacturer sub-brand
custom_keywords Manufacturer search keywords, separated by the pipe character
prop_65_message California Proposition 65 warning text
ean European Article Number
upc_11 11-digit UPC
gtin GTIN of the product
retail_flag Manufacturer retail flag
country_of_origin Country or countries where the product was manufactured
abc_classification Manufacturer ABC (sales velocity) classification
hazardous_material Hazardous material indicator
manufacturer_product_group, product_group_code, manufacturer_group_code Manufacturer product grouping codes
reach_status, reach_list_date EU REACH regulation status and the date it was listed

Price

Price

<price>
    <region_id>USA</region_id>
    <list_price>248.0000</list_price>
    <order_min>10</order_min>
    <price_effective_date>2026-10-01</price_effective_date>
    <currency>USD</currency>
    <tariff_code>8544422000</tariff_code>
    <business_group>CTO</business_group>
</price>

The product's current price in your export's price region (USA unless your export is set up otherwise).

Element Data Type Description
region_id String Region the price applies to
list_price Decimal List price
currency String Currency of the price
units_qty, units_uom Integer, String Number of units the price covers, and their unit
country_of_origin String Country of origin on the price record
order_min Integer Minimum order quantity
order_increment Integer Quantity the product must be ordered in multiples of
price_effective_date Date Date the price took effect (YYYY-MM-DD)
next_list_price, next_effective_date Decimal, Date Next scheduled list price and when it takes effect
tariff_code String Harmonized tariff code
stocked String Manufacturer stocking status
discount_code String Manufacturer discount code
standard_lead_time String Standard lead time
business_group String Manufacturer business group
language_code String Language of the price record

Images and Sizes

Images

<primary_image>
    <name>111885243.jpg</name>
    <display_name>primary_image</display_name>
    <mime_type>image/png</mime_type>
    <uri>https://media.distributordatasolutions.com/209/panduit/large/1e195309331f4536a4c7ffaa82f0d2f6b2a062f3-large.png</uri>
    <sizes>
        <thumb>
            <length>1738</length>
            <uri>https://media.distributordatasolutions.com/209/panduit/thumbnails/1e195309331f4536a4c7ffaa82f0d2f6b2a062f3-thumb.png</uri>
        </thumb>
        <small>...</small>
        <medium>...</medium>
        <large>...</large>
        <native>...</native>
    </sizes>
</primary_image>
<alternate_images>
    <alternate_image>
        <name>101885669.jpg</name>
        <display_name>alternate_image</display_name>
        <mime_type>image/png</mime_type>
        <weight>0</weight>
        <uri>https://media.distributordatasolutions.com/209/panduit/large/...-large.png</uri>
        <sizes>...</sizes>
    </alternate_image>
</alternate_images>
<alternate_images>
    <alternate_image>...</alternate_image>
</alternate_images>

Every image comes in several sizes, all hosted on the DDS CDN. Each alternate image is wrapped in its own <alternate_images> element. Unlike JSON, the primary image has no weight.

Image

Element Data Type Description
name String Original file name of the image
display_name String Label for the image
mime_type String MIME type of the hosted image
weight Integer Alternate images only: sort order
uri String URL of the large image
manufacturer_file_id String Alternate images only: manufacturer's identifier for the file, when supplied
sizes Sizes The image in each size: thumb, small, medium, large and native

Size

Element Data Type Description
uri String URL of the image at this size
length Integer File size in bytes (not a dimension). Not always present
Size Dimensions
thumb Small thumbnail (about 64 px), cropped to a square
small Up to 256 × 256 px
medium Up to 512 × 512 px
large Up to 1024 × 1024 px
native Original size from the manufacturer

Spec Sheet and SDS

Simple File

<primary_spec_sheet>
    <name>111891321.pdf</name>
    <display_name>Spec Sheet</display_name>
    <mime_type>application/pdf</mime_type>
    <uri>https://media.distributordatasolutions.com/209/panduit/...pdf</uri>
    <weight>0</weight>
</primary_spec_sheet>

<primary_spec_sheet> and <safety_data_sheet> use the same format. Both files are also listed in <downloads>.

Element Data Type Description
name String File name
display_name String Label for the file
mime_type String Usually application/pdf
uri String URL of the file on the DDS CDN
weight Integer Sort order

Packages

Packages

<packages>
    <package>
        <gtin>00074983960095</gtin>
        <qty>1</qty>
        <qty_uom>Piece</qty_uom>
        <gross_weight>0.14</gross_weight>
        <gross_weight_uom>lbs</gross_weight_uom>
        <pkg_length>9.00</pkg_length>
        <pkg_length_uom>in</pkg_length_uom>
        <pkg_height>1.50</pkg_height>
        <pkg_height_uom>in</pkg_height_uom>
        <pkg_width>5.00</pkg_width>
        <pkg_width_uom>in</pkg_width_uom>
        <code>58bc64ae47194afc8cfc6ffb828ec092</code>
    </package>
</packages>

One <package> per packaging level. The elements are the same as the JSON Package Object: code, parent_code, gtin, sub_gtin, sub_qty, qty, qty_uom, gross_weight, pkg_length, pkg_height, pkg_width, pkg_volume (each with a matching _uom), description and returnable.

Certifications

Certifications

<certifications>
    <certification>
        <agency>UL</agency>
        <name>UL Listed</name>
        <cert_number>E129886</cert_number>
    </certification>
</certifications>

Certifications as supplied by the manufacturer.

Element Data Type Description
agency String Certifying agency
name String Certification name
cert_number String Certificate or file number

Facets

Facets

<facets>
    <facet>
        <data_key>overall_thickness</data_key>
        <name>Overall Thickness</name>
        <values>
            <value>
                <facet_value>0.017</facet_value>
                <value_with_uom>0.017 inches</value_with_uom>
                <uom_unit>inch</uom_unit>
                <uom_unit_plural>inches</uom_unit_plural>
                <uom_abbreviation>in</uom_abbreviation>
                <uom_abbreviation_plural>in</uom_abbreviation_plural>
            </value>
        </values>
        <values>
            <value>
                <facet_value>0.4</facet_value>
                <value_with_uom>0.4 millimeters</value_with_uom>
                ...
            </value>
        </values>
    </facet>
    <facet>
        <data_key>color</data_key>
        <name>Color</name>
        <values>
            <value>
                <facet_value>Gray</facet_value>
                <value_with_uom>Gray</value_with_uom>
            </value>
        </values>
    </facet>
</facets>

Facets are normalized, filterable attributes curated by the DDS data team. See Facets in the JSON guide for how to use them. Each value of a facet is wrapped in its own <values> element.

Facet

Element Data Type Description
data_key String Stable identifier for the facet
name String Display name
values Facet Value (repeated) One or more values

Facet Value

Element Data Type Description
facet_value String Value without its unit of measure
value_with_uom String Value with its unit, pluralized correctly, for display
uom_unit, uom_unit_plural String Unit of measure, singular and plural. Absent for unitless facets
uom_abbreviation, uom_abbreviation_plural String Unit abbreviation, singular and plural

In XML the value element is named facet_value; JSON and Multi CSV call it value.

Categories

Categories

<categories>
    <category>
        <category_id>2334443</category_id>
        <code>a7335bc27671df5fea6b2f004e0e3637</code>
        <name>Fiber Optic Systems</name>
    </category>
    <category>
        <category_id>2334497</category_id>
        <code>3960d5798a46e3a83f964ceac1728c1f</code>
        <name>Fiber Optic Cable Assemblies</name>
        <parent_id>2334443</parent_id>
    </category>
</categories>

Each <category> is one level of the product's category branch. Link levels together with parent_id. The top level has no parent_id. Depending on how your export is set up, these are DDS categories or the manufacturer's own taxonomy.

Element Data Type Description
category_id Integer Unique identifier for the category
parent_id Integer category_id of the parent category. Absent for top-level categories
code String Code that uniquely identifies the category
name String Category name

360 Images

360 Images

<images_360>
    <cols>24</cols>
    <rows>1</rows>
    <initial_image>209/panduit/medium/ad707ea18ce91bd217586467c4864d326b5c661c-r01-c01-medium.png</initial_image>
    <filename>ad707ea18ce91bd217586467c4864d326b5c661c-r{row}-c{col}-medium.png</filename>
    <initial_thumb>209/panduit/thumbnails/ad707ea18ce91bd217586467c4864d326b5c661c-r01-c01-thumb.png</initial_thumb>
    <filename_large>ad707ea18ce91bd217586467c4864d326b5c661c-r{row}-c{col}-native.png</filename_large>
    <format>row-column</format>
    <iframe_url>https://media.distributordatasolutions.com/assets/magic360/viewer.html?initial=/209/panduit/medium/ad707ea18ce91bd217586467c4864d326b5c661c-r01-c01-medium.png&amp;filename=ad707ea18ce91bd217586467c4864d326b5c661c-r{row}-c{col}-medium.png&amp;rows=1&amp;cols=24</iframe_url>
    <display_name>F3X3LG6_R01_C01.jpg</display_name>
</images_360>

Each 360 image is a separate <images_360> element. The simplest way to show one is to use iframe_url as the src of an <iframe>. That loads a ready-made DDS viewer. Note that & in the URL is escaped as &amp; in the XML; your parser will unescape it.

Element Data Type Description
cols Integer Number of frames around the product
rows Integer Number of vertical rows of frames
initial_image String Path of the first frame, medium size, relative to https://media.distributordatasolutions.com/
filename String File-name pattern for medium frames. {row} and {col} are two-digit numbers
initial_thumb String Path of the first frame, thumbnail size, relative to https://media.distributordatasolutions.com/
filename_large String File-name pattern for full-size (native) frames
format String Always row-column
iframe_url String URL of the hosted 360 viewer for this product
display_name String Label for the 360 image

Features and Specifications

Features and Specifications

<features>
    <feature>Standards Met: RoHS Compliant, UL Recognized, CE Compliant</feature>
    <feature>Lead-free PVC</feature>
</features>
<specifications>
    <group>
        <group_name>Specifications</group_name>
        <group_items>
            <item>
                <name>Overall Width (In.)</name>
                <value>3.25</value>
                <weight>20</weight>
            </item>
            <item>
                <name>Note</name>
                <value>Cover sold separately</value>
                <weight>30</weight>
            </item>
        </group_items>
    </group>
</specifications>

Specification Group

Element Data Type Description
group_name String Display name of the group
group_items Items The <item> elements in the group

Specification Item

Element Data Type Description
name String Attribute name
value String Attribute value
weight Integer Sort order

Downloads and Videos

Downloads and Videos

<downloads>
    <group>
        <group_items>
            <item>
                <name>101714999.pdf</name>
                <display_name>Certifications 1</display_name>
                <mime_type>application/pdf</mime_type>
                <uri>https://media.distributordatasolutions.com/209/panduit/66a6fa66a537b986dbf2ad30d8078d39b971e926.pdf</uri>
                <ext_hosted>0</ext_hosted>
                <weight>50</weight>
                <locale>en-US</locale>
            </item>
        </group_items>
    </group>
</downloads>

<downloads> and <videos> hold every file in a single <group>. Sort files by weight. When ext_hosted is 0, the file is hosted on the DDS CDN. When it is 1, the file is hosted elsewhere, typically a YouTube or Vimeo embed URL.

Element Data Type Description
name String File name
display_name String Human-readable label for the file
mime_type String MIME type of the file
uri String URL of the file
ext_hosted Integer 1 if the file is hosted outside DDS, otherwise 0
weight Integer Sort order
locale String Language of the file, for example en-US
description String Longer description of the file
duration String Videos: running time
manufacturer_file_id String Manufacturer's identifier for the file, when supplied

ETIM

ETIM

<etim>
    <group_code>EG000011</group_code>
    <group_description>Cabinet enclosures</group_description>
    <class_code>EC002625</class_code>
    <class_description>Mounting accessories (switchgear cabinet)</class_description>
    <version>7</version>
    <features>
        <feature_code>EF000008</feature_code>
        <feature_name>Width</feature_name>
        <value_string>930.00</value_string>
        <unit_code>EU570448</unit_code>
        <unit_name>Millimetre</unit_name>
    </features>
    <features>
        <feature_code>EF000215</feature_code>
        <feature_name>Type of accessory/spare part</feature_name>
        <value_code>EV000154</value_code>
    </features>
</etim>

The product's ETIM classification, when it has one. Each ETIM feature is a separate <features> element. The elements match the JSON ETIM Object and ETIM Feature Object.

File Delivery

What a Delivery Contains

Uncompressed delivery on the DDS SFTP server

from-dds/ddx/en-US/{export name}/{date and time}/
    JSON:       files/part-00000-...-c000.json
                files/part-00000-...-c001.json
    Multi CSV:  items.csv, features.csv, ...
    XML:        part-00000.xml

Compressed delivery

from-dds/ddx/en-US/{export name}-{date and time}.zip

Each delivery is a complete snapshot of your export at the time it ran, in its own dated folder. Exports can be delivered uncompressed, or as a single .zip or .tbz2 (bzip2) archive. Your DDS contact can tell you which your export uses.

Completion flag

Some exports include an empty _SUCCESS file, written after every other file in the delivery. If yours does, wait for _SUCCESS to appear before you start processing.

Incremental exports

If your export is set up as incremental, each delivery also contains files that describe what changed since the previous delivery.

JSON

File Contents
new-products.csv Products that were not in the previous delivery
deleted-products.csv Products that were in the previous delivery and are no longer in your export
incremental-files/ Complete records for every new or changed product, in the same JSON format as the main export

Multi CSV

Each data file is compared on its own, row by row, so every file gets its own set of change files:

File Contents
{file}-new-products.csv, for example items-new-products.csv Identifiers that have rows in this file now but did not in the previous delivery
{file}-deleted-products.csv, for example features-deleted-products.csv Identifiers that had rows in this file in the previous delivery and no longer do
incremental/{file}.csv, for example incremental/features.csv Only the rows of that file that are new or changed

Because each file is compared separately, a product whose only change is a new feature appears in incremental/features.csv but not in incremental/items.csv. To rebuild a product completely, use the full files in the same delivery.

The first incremental delivery has no previous delivery to compare against, so every product appears as new. In JSON deleted-products.csv and Multi CSV items-deleted-products.csv, "deleted" means the product is no longer in your export, not necessarily that the manufacturer discontinued it. In other Multi CSV change files, it means the identifier no longer has rows in that particular data file; the product may still be present in items.csv.

SFTP Access

DDS hosts an SFTP server at sftp.distds.com, port 22. DDS will give you a username and password.

Folder Use
from-dds Files DDS delivers to you, including your exports
to-dds Files you send to DDS. Your DDS contact will tell you which subfolder to use, for example to-dds/customer-products for a product file to match

Connecting with FileZilla

Any SFTP client will work. FileZilla is a good free option.

  1. Start FileZilla and click the Site Manager button. FileZilla toolbar with the Site Manager button
  2. In the Site Manager, click New Site. FileZilla Site Manager with the New Site button
  3. Name the site something memorable, such as "DDS", and press Enter. Then fill in the connection details:

    • Protocol: SFTP - SSH File Transfer Protocol
    • Host: sftp.distds.com
    • Port: 22
    • Logon Type: Normal
    • User and Password: the credentials DDS gave you

    Click Connect. FileZilla site settings for sftp.distds.com

  4. FileZilla asks whether to save your password. Follow your company's policy:

    • Save passwords is the most convenient and least secure option.
    • Do not save passwords means you re-enter the password each time you connect.
    • Save passwords protected by a master password saves all your FileZilla passwords behind one master password of your own.

    FileZilla password saving options

  5. The first time you connect, FileZilla shows the server's host key. Check that the fingerprint matches the one above, tick Always trust this host, and click OK. FileZilla unknown host key dialog showing the server fingerprint

  6. You are now connected. Your exports are in from-dds. FileZilla connected to the DDS SFTP server

To reconnect later, open the Site Manager, select the DDS site, and click Connect.

Sending Product Files to DDS

Acadia Product File Upload

You can upload your product file to DDS through Acadia. This suits a first match run, or teams that cannot yet send their product file automatically.

  1. From the PRODUCT MANAGEMENT menu, click PRODUCT FILE UPLOAD. Acadia Product Management menu with Product File Upload highlighted
  2. On the Product Match File Upload page, choose your file and upload it. Acadia Product Match File Upload page

The upload accepts .csv, .txt and .tsv files.

To send product files automatically instead, upload them over SFTP to the to-dds subfolder your DDS contact gives you.