Модели ответов Product API
С response_format: "standard" (по умолчанию) product endpoints возвращают типы ниже. Канонический TypeScript: packages/shared/src/products.ts.
Endpoints: детали · поиск · поиск по изображению · парсинг
Обертка ответа {#envelope}
| Endpoint | Форма |
|---|---|
detail, parse | { product: StandardProductDetail, request_id } |
search, search-by-image | StandardProductList & { request_id } |
upload-image | { channel, image_id, request_id } |
StandardProductDetail {#standard-product-detail}
Полный снимок товара для страниц товара и checkout. Маппинг в orders: source_product_id → offer_id, variants[].sku_id → spec_id (заказы закупки).
Идентичность и канал
| Поле | Тип | Описание |
|---|---|---|
id | string | Составной ключ HIOBuy: {channel}_{source_product_id} |
channel | string | 1688, taobao или weidian |
source_product_id | string | 1688 = offerId; Taobao = mi_id (обязательно для order APIs) |
source_url | string | Канонический URL страницы товара |
Локализованный текст (title, description)
| Поле | Тип | Описание |
|---|---|---|
original | string | Текст маркетплейса (обычно китайский) |
translated | string | null | Перевод для запрошенного language |
language | string | Locale для translated |
description | object | null | Подробное описание (часто HTML) |
Цены (price, price_tiers[])
Все суммы в CNY yuan (не fen). Предпочитайте promotion_amount, если задано, иначе display_amount.
| Поле | Тип | Описание |
|---|---|---|
price.original_amount | number | List price до promotions |
price.display_amount | number | Цена для покупателя (CNY) |
price.promotion_amount | number | null | Promotional unit price, когда применимо |
price.original_currency / display_currency | string | Всегда CNY |
price_tiers[] | array | Оптовые ступени 1688; пусто на Taobao |
min_order_quantity | number | null | 1688 MOQ |
distribution_min_quantity | number | null | Минимум 1688 dropship |
Медиа (images[], videos)
| Поле | Тип | Описание |
|---|---|---|
images[].url | string | URL изображения CDN |
images[].type | enum | main, gallery или variant |
videos.main / videos.detail | string | null | Видео 1688; Taobao null |
Attributes vs variants
Только variants[] управляет выбором SKU и строками заказа.
| Поле | Роль |
|---|---|
attributes[] | CPV specs — только отображение, не для SKU resolution |
variants[] | Покупаемая SKU matrix с ценой, остатком и specs |
Объект variant (variants[])
| Поле | Тип | Описание |
|---|---|---|
sku_id | string | Передавайте как spec_id при order create |
upstream_sku_id | string | null | Числовой skuId 1688 |
attributes[] | array | Измерения spec (цвет, размер, …) |
price | object | Цена на уровне SKU в yuan |
stock | number | Доступное количество; 0 = нет в наличии |
image | string | null | Основное изображение SKU |
shipping | object | null | Размеры упаковки 1688 для freight |
distribution | object | null | Цены 1688 dropship |
Продавец, доставка и metadata
| Поле | Тип | Описание |
|---|---|---|
seller.id / seller.name | string | Shop id и отображаемое имя |
seller.shop_url | string | null | Ссылка на storefront |
shipping.shipping_from | string | null | Регион внутренней отправки |
shipping.domestic_shipping_fee | object | null | Оценка внутренней платы доставки в yuan |
metadata.raw_category | string | null | Upstream category |
metadata.brand | string | null | Заявленный бренд |
metadata.updated_at | string | Последняя синхронизация ISO 8601 |
trade_score | string | null | Оценка качества 1688 |
Пример (сокращено)
{
"product": {
"id": "1688_554456348334",
"channel": "1688",
"source_product_id": "554456348334",
"title": {
"original": "...",
"translated": "...",
"language": "en"
},
"price": {
"display_amount": 29.9,
"promotion_amount": 24.9
},
"variants": [
{
"sku_id": "b266e0...",
"stock": 100
}
]
},
"request_id": "req_..."
}Доступность полей по каналам
| Поле | 1688 | Taobao | Weidian |
|---|---|---|---|
videos, price_tiers, trade_score | ✓ | — | Зависит |
variants[].shipping, distribution | ✓ | — | — |
source_product_id для orders | offerId | mi_id | Platform id |
StandardProductList {#standard-product-list}
Из поиска и поиска по изображению. Каждая запись items[] — это summary; вызовите detail для SKU matrix.
| Поле | Тип | Описание |
|---|---|---|
channel | string | Запрошенный маркетплейс |
keyword | string | Эхо keyword (пусто для чистого image search) |
page / page_size | number | Примененная pagination |
total | number | Upstream total (может быть приблизительным) |
items[] | array | Объекты StandardProductListItem |
pic_region_info | object | Image search: обнаруженная crop region |
StandardProductListItem
| Поле | Тип | Описание |
|---|---|---|
id, channel, source_product_id, source_url | string | Используйте source_product_id для получения detail |
title | LocalizedTitle | Название listing |
price | ProductPrice | Summary price в CNY yuan |
image | string | Thumbnail URL |
seller.name | string | Название магазина |
Ответ upload-image {#upload-image-response}
| Поле | Тип | Описание |
|---|---|---|
channel | string | Маркетплейс, который сохранил изображение |
image_id | string | Повторно используйте в поиске по изображению |
Выбор variant {#variant-selection}
- Загрузите detail → прочитайте
product.variants. - Сгруппируйте по
attributes[].original_nameдля dimension pickers. - Фильтруйте variants по каждому выбору пользователя; отключайте options без остатка.
- Передайте соответствующие
sku_idиsource_product_idв order preview.