API v3 методы версия 3 для работы с остатками, описанием и передачей цен на товары

в Выгрузки и Api .

Для удобства и сокращении времени для передачи Вам актуальной информации, нами были разработаны API методы, которые позволят Вам оперативно получать самую актуальную информацию по товарам и их остаткам. 

С 1 Июля 2025 года начала работать версия 3 – API v3

Так же мы запустили дополнительный сервер для первичных запросов чтобы можно было стабильно получать данные из разных регионов мира. В примерах мы используем хост в дата-центре на территории РФ https://ru1.apidnt.ru/v3/ но также можно использовать хост в ДЦ Хельсинки https://fn1.apidnt.ru/v3/

Главное отличие v3 в использовании CDN для передачи данных. B связи с периодическими сложностями доступа к API Dynatone из различных регионов и в связи с перегруженностью, мы развернули передачу данных через Anycast CDN (content delivery network). Сеть стостоит из 45 серверов на территории РФ и развернута на базе инфраструктуры одного из крупнейших Российских провайдеров, что исключает блокировки и задержки (как это часто бывает с зарубежными операторами). CDN кроме серверов в РФ включает и сервера других странах. Что облегчит доступ к API Dynatone нашим партнерам за пределами РФ..

При программном получении данных важно иметь ввиду, что при запросе происходит редирект на нужный сервер сети. Для этого функция чтения файлов у вас должна поддерживать редирект. При программном обращении к АПИ он вернет 302 ответ и адрес, на который надо перейти. Поэтому при программных запросах должен обрабатываться редирект. Если у вас возникнут сложности с обработкой Редиректа, можно по прежнему использовать API v2, для этого в URL надо поменять v3 на v2.

Вот как может выглядеть запрос на PHP

function get_file_curl($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // ВАЖНО: следовать редиректам
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5);         // Безопасный лимит
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);   //  Если нет ответа 5 сек, то и не будеи ждать, может временная ошибка в сети
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

    $data = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if ($httpCode !== 200 || $data === false) {
        throw new Exception("Failed to get file (HTTP $httpCode): $url");
    }
    curl_close($ch);
    return $data;
}


 

Рекомендация:

Для обеспечения уникальности товара в ващей БД лучше всего использовать два параметра (поля в БД). Еще лучше сделать в БД уникальный ключ по этим двум полям.

  • ID поставщика. Если у вас насколько поставщиков
  • ID товара по нумерации поставщика. В нашем случае это Код Товара "DNT-12345" но если для скрости работы БД можете использовать без префикса, только цифры. В любом случае будет обеспечена уникальность в рамках нашеего списка товаров.

Так как мы не можем гарантировать что никто из других поставщиков не использует такой же как у нас код товара "DNT-12345". Некоторые это уникальное поле называют артикул, ID товара и тп. И именно уникальность по двум этим параметрам (полям БД) будет гарантировать что не будет путанницы в товарах. 

Для облегчения работы наших партнеров с МаркетПлейсами добавлены два поля в API (product/list), CSV (две последние колонки) и XML.
В ближайшие дни добавим эти колонки в XLS прайс лист

  • stock_express – Остаток на экспресс складе (отгрузка примерно 1 сутки)
  • stock_warehouse – Остаток на всех наших складах в Москве (отгрузка обычно 2-3 дня)
  • price_marketplace - цена для Выгрузки на Маркетплейсы. Так как Маркетплейсы сами часто дают скидки без согласования (до 30%) то для брендов с контролем РРЦ проще передавать на Маркетплейсы завышенную цену. 
  • price_min - Минимальная рекомендованная цена (МРЦ) с учетом всех скидок. Можно ставить ее как цену продажи на свой сайт. 

Ниже находится инструкция и краткое описание возможностей, которые предоставляет наша система. Покажите это своим программистам и они помогут Вам настроить своевременный обмен данными. 

Хост АПИ портала  https://ru1.apidnt.ru/v3/, для доступа к возможностям системы Вам потребуется Api ключ, который будет Автоматически подставлен в примеры и описания, речь о которых пойдет ниже! 

Ваш ключ: 

Сейчас работают такие методы

Предлагаем следующий алгоритм обмена.

1.  product/list – список товаров с ценами и наличием

Настройте на своем сайте, каждые пол часа, загрузку списка товаров с ценами и наличием методом product/list. Список можно загружать либо весь сразу, либо частями. У нас обновление данных происходит каждые пол часа. Так что наиболее оптимально загружать эти данные каждые пол часа.
В своей системе на сайте сделайте  чтобы в таблице товаров были два поля для хранения дат:

  • description_updated – дата обновления описания на вашем сайте
  • description_updated_dnt – дата последнего обновления в базе Динатон

Значение, которое получаете из списка товаров, надо записывать в поле description_updated_dnt.

URL с параметрами и вашим ключом

https://ru1.apidnt.ru/v3/product/list?key=&fields=name,barcode,brand&limit=10&start=50

Запрос GET:

 

Параметр

Обязательный или нет

Пояснения

key

Обязательный

АПИ ключ клиента

fileds

Необязательный

  • список доп полей. Включать по желанию, через запятую

    • name – название краткое

    • name_full – название расширенное

    • barcode - штрихкод в одном из форматов GTIN (8-14 знаков)

    • brand - бренд

    • newcoming_qnt - количество ожидаемое к поступлению в новой партии

    • newcoming_date - дата ожидаемого поступления новой партии

    • article - артикул товара. Часто артикул поставщика. Не уникальный

limit

Необязательный

Количество позиций в выдаче

start

Необязательный

С какой позиции начинается выдача

no_empty_stock Необязательный Если =1 то не передаются нулевые остатки
product_id Необязательный  Код товара если надо получить данные только об одном товаре

 

Возвращаемые значения в блоке [product] :

  • product_id – код товара в системе Динатон
  • price – РРЦ - Рекомендованная Розничная Цена
  • price_min -  МРЦ - Минимальная рекомендованная цена с учетом всех скидок. Можно ставить ее как цену продажи на свой сайт. 
  • price_marketplace - Цена для Выгрузки на Маркетплейсы
  • price_dealer – Цена Дилер
  • vat - Включает ли товар НДС (зависит от поставщика) и в каком размере
  • stock – Все товары возможные к поставке. Остатки на всех складах, магазинах и на складах поставщиков. По стороннему товару не можем гарантировать сроки и количества.
  • stock_warehouse – Остаток на всех наших складах в Москве (отгрузка обычно 2-3 дня)
  • stock_express – Остаток на экспресс складе (отгрузка примерно 1 сутки)
  • stock_shops – Остаток в магазинах
  • stock_reserved – Товары в резерве (уточните у менеджера, если скрок резерва истекает, то возможно получение товара)
  • stock_used – Остатки товаров имеющих витринный внешний вид или скрытые косметические дефекты, возможны проблемы с упаковокой или ее отсутствие. Товар исправный, без функциональных дефектов
  • stock_call – Остаток на удаленном складе или складах партнеров
  • description_updated – Дата последнего обновления Описания
  • barcode – штрихкод в одном из форматов GTIN (8-14 знаков)
  • brand - Бренд
  • newcoming_qnt - количество в новой партии ожидаемое к поступлению
  • newcoming_date - дата ожидаемого поступления новой партии

Пример ответа: 

{
   "result":"OK",
   "items_total":1,
   "items_now":1,
   "start":0,
   "limit":100000,
   "product":[
      {
         "product_id":"DNT-28149",
         "price":49350,
         "price_minimum":39480,
         "price_marketplace":50140,
         "price_dealer":31277,
         "vat":20,
         "stock":10,
         "stock_warehouse":10,
         "stock_express":10,
         "stock_shops":4,
         "stock_reserved": 7,
         "stock_used": 3,
         "stock_call":0,
         "description_updated":"2023-11-14 22:06:02",
         "barcode":3831120912778,
         "brand":"PEREZ",
         "newcoming_qnt":26,
         "newcoming_date":"2023-11-30"
      }
   ]
}

 

2. product/info – описание одного товара

Сделайте скрипт, работающий по расписанию (Cron Job сервера) который будет раз в 5-10 минут обновлять или добавлять описания на товары у которых не совпадают description_updated и description_updated_dnt вызывая метод product/info.

При обновлении описания, следует обновить дату description_updated, после этого две даты будут совпадать и этот товар уже не будет обновляться.

Сортировку лучше делать по полю description_updated, тогда в первую очередь будут обновляться описания на товары, где еще не обновлялись.

Пример запроса: https://ru1.apidnt.ru/v3/product/info/?key=3&product_id=DNT-36816&add_video=1&add_parameters=1

Запрос GET:

Параметр

Обязательный или нет

Пояснения

key

Обязательный

АПИ ключ клиента

product_id

Обязательный

Код товара по нумерации Динатон.

С префиксом “DNT-“

Рекомендуем сохранять в поле Артикул

add_video

Необязательный

При значении = 1 к описанию будет добавлен встраиваемый плеер ЮТ. Все видео сделаны без упоминанию магазинов Динатон или каких либо других магазинов

add_parameters

Необязательный

Добавить к описанию в виде перечисления характеристики товаров

Возвращаемые значения:

  • product_id – код товара в системе Динатон
  • name – Название товара
  • name_full – Расширенное Название товара
  • brand - Бренд
  • category_path – путь по категория от текущей до корневой. Элемент массива 0 – означает текущую категорию
  • product_type – Тип Товара
  • model – Модель
  • modification - Модификация
  • barcode – штрихкод в одном из форматов GTIN (8-14 знаков)
  • article – Артикул
  • image_main – Основная картинка
  • images – Массив картинок
  • description_updated – Дата последнего обновления Описания
  • weight – Вес в граммах
  • length – Длина в сантиметрах
  • width – Ширина в сантиметрах
  • height – Высота в сантиметрах
  • video – массив ссылок на ЮТ видео. Все видео сделаны без упоминанию магазинов Динатон или каких либо других магазинов
  • parameters – Харакетристики товара
  • description – Описание товара

Пример Ответа:

   "description_updated":"2022-01-25 12:57:58",

   "weight":870,

   "length":57.499999999999993,

   "width":23.5,

   "height":10,

   "video":[

      "https:\/\/www.youtube.com\/embed\/8xxXH8l6CRs"

   ],

   "product_type":"Укулеле сопрано",

   "parameters":{

      "Цвет":"натуральный",

      "Отделка":"матовая",

      "Материал верхней деки":"сапеле",

      "Материал нижней деки":"сапеле",

      "Материал накладки грифа":"орех",

      "Материал грифа":"окоуме",

      "Количество ладов, шт.":12,

      "для Детей":"Да",

      "Рекомендуем":"Да",

      "в подарок":"Да",

      "Страна происхождения":"КИТАЙ",

      "для Начинающих":"Да",

      "для Обучения":"Да",

      "Материал струн":"синтетика",

      "Ширина грифа, мм":"35 мм",

      "Размер инструмента":"сопрано",

      "Кол-во струн":4,

      "Мензура, мм":350,

      "Серия":"FLIGHT Natural"

   },

   "description":"<p class=\"MsoNormal\">\"Небольшой размер - и глубокое звучание!\" - под этим слоганом укулеле сопрано <strong>NUS310<\/strong> вышла на музыкальный рынок и захватила весь мир!<\/p>\r\n<p class=\"MsoNormal\">Создатели наградили этот укулеле набором качеств, буквально предопределившим ее популярность. Глубокий звук, идеальное интонирование, легкость, компактность и надежность, выделяющие ее даже среди сородичей-укулеле, вместе с ее парадоксально высокой ценой, делают <strong>NUS310<\/strong> равно любимицей начинающих музыкантов, так и опытных музыкантов. Она снимает с первого взгляда, с первым прикосновением к струнам, так тепло пленяет под чувствами, а корпус из сапеле издает ее звучание. Взяв укулеле NUS 310 в руки, ее просто не захочешь отпускать.<\/p>\r\n<p class=\"MsoNormal\">Ламинированная дека укулеле <strong>NUS 310<\/strong> проста и неприхотлива в уходе, поэтому эта модель - очень удачный вариант, если вы приобрели инструмент для путешествий.<\/p>\r\n<p class=\"MsoNormal\"><strong>Технические характеристики:<\/strong><\/p>\r\n<ul>\r\n<li>Размер - сопрано (сопрано)<\/li>\r\n<li>Верхняя дека - сапеле<\/li>\r\n<li>Корпус - сапеле<\/li>\r\n<li>Гриф - окуме<\/li>\r\n<li>Накладка на гриф - палисандр<\/li>\r\n<li>Фирменный чехол в комплекте<\/li>\r\n<\/ul>\r\n<p>В серии укулеле  <strong>Flight NU <\/strong> представлены все укулеле 4 размеров, каждая модель имеет свой оригинальный дизайн розетки.Размер укулеле Сопрано - самая маленькая укулеле 4 размеров. По возрастанию размеров укулеле можно расставить следующим образом - сопрано, концерт, тенор и баритон. Серия  <strong>Flight NU<\/strong>  - это так называемый начальный уровень, то есть начальный уровень укулеле. Все модели изготовлены из древесины Sapele  <em>(Сапеле)<\/em> , обладающей интересной структурой коричневого цвета с золотисто-ореховым оттенком.<\/p>\n\n<br><ul><li>Цвет - натуральный<\/li>\n<li>Отделка - матовая<\/li>\n<li>Материал верхней деки - сапеле<\/li>\n<li>Материал нижней деки - сапеле<\/li>\n<li>Материал накладки грифа - орех<\/li>\n<li>Материал грифа - окоуме<\/li>\n<li>Количество ладов, шт. - 12<\/li>\n<li>для Детей - Да<\/li>\n<li>Рекомендуем - Да<\/li>\n<li>в подарок - Да<\/li>\n<li>Страна происхождения - КИТАЙ<\/li>\n<li>для Начинающих - Да<\/li>\n<li>для Обучения - Да<\/li>\n<li>Материал струн - синтетика<\/li>\n<li>Ширина грифа, мм - 35 мм<\/li>\n<li>Размер инструмента - сопрано<\/li>\n<li>Кол-во струн - 4<\/li>\n<li>Мензура, мм - 350<\/li>\n<li>Серия - FLIGHT Natural<\/li><\/ul>\n\n<br><iframe width='560' height='315' src='https:\/\/www.youtube.com\/embed\/8xxXH8l6CRs' title='YouTube video player' frameborder='0' allow='accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture' allowfullscreen><\/iframe>"

}

3. category/list – список групп с названиями и подчиненностью

Примерно раз в сутки следует делать запрос на обновление структуры категорий методом category/list
Пример запроса: https://ru1.apidnt.ru/v3/category/list?key=

Запрос:

  • key – обязательный, АПИ ключ дилера

Возвращаемые значения:

  • category_id – код категории в системе Динатон
  • parent_id– код категории Родителя. 0 – значит это корневая категория
  • level – уровень категории
  • name – Название
  • category_path – путь по категория от текущей до корневой. Элемент массива 0 – означает текущую категорию

Пример:

[

{

   "category_id":"78454",

   "parent_id":"78442",

   "sort_order":"744",

   "level":"3",

   "name":"Аксессуары для виолончелей",

   "category_path":[

      "78454",

      "78442",

      "78433",

      "78565"

   ]

}]

Теги:api, apiv3
660.984 milliseconds