## Дополнительный формат API (первичный черновик) Все запросы передаются методом POST Все структуры строго типизированы, т.е. надо следить за типа данных, числа передаются без кавычек, строки в кавычках. Используемые коды: - 200 - Выполнено успешно - 206 - Частично выполнено (не завершено, например, генерирование отчета) - 202 - Заявка принята - 400 - Не правильно оформлен запрос - 403 - Доступ запрещен, не верный токен - 404 - Не найдено, например пользователь или сборка - 502 - Внутрення ошибка (расшифровка в поле message в теле ответа) Используемые сущности - matcher - (сборка) совокупность сайтов и исходных записей для сбора информации. Аналог группы. - watchers - сайты, загруженные файлы поставщиков и/или конкурентов, метаформулы для вычисления результатов - records - исходные данные для сбора информации - rules - Правила сбора информации. Алиасы для брендов, логин пароль для авторизации на сайте и т.п Для поддержки сжатия в ответе, при запросе используйте заголовок Accept-Encoding: "gzip" в соостветсии со стандартом Пример полного url: https://ncrawler.com/api/matcher/status?token=XXXXXX ### Создание сборки endpoint: api/matcher/create?token=XXXXXXXXXXX REQUEST: (более полный пример в файле examples/create.json) ```json { "title" : "Произвольное название сборки", "watchers" : [ { "type" : "site", "sld" : "emex.ru", "city" : "москва" } ], "records" : [ { "sku": "13273", "vcode": "C-10", "brand": "HKT", "model": "C-10", "tags": ["да"] }, { "sku": "9733", "vcode": "P102", "brand": "TAMA", "model": "P102", "tags": ["да"] } ] } ``` RESPONSE: ```json { "message" : "Описание ошибки если есть", "matcher_id" : 10 // Идентификатор созданной сборки } ``` ### Получение списка всех сборок REQUEST: endpoint api/matcher/list?token=XXXXXX ### Обновление исходных записей endpoint: api/matcher/update&token=XXXXXXXXXXX REQUEST ```json { "matcher_id": 10, "records": [ { "sku": "articul_code", "vcode": "5531", "brand": "ngk", "title": "full item title", "model": "5531", "tags": [ "some", "free", "tags" ], "price": 5000 } ] } ``` ### Запуск сбора данных endpoint api/matcher/start&token=XXXXXXXXXXX REQUEST: ```json { "matcher_id": 10 } ``` RESPONSE: ```json { "message": "Расшифровка ошибки если есть" } ``` ### Остановка сбора данных endpoint api/matcher/stop&token=XXXXXXXXXXX REQUEST: ```json { "matcher_id": 10 } ``` RESPONSE: ```json { "message": "Расшифровка ошибки если есть" } ``` ### Состояние сборки endpoint: api/matcher/status REQUEST: ```json { "matcher_id" : 10 } ``` RESPONSE: ```json { "state": "processing", // Общее состояние "progress" : 10, // Общий прогресс "watchers": [ { "id": 11, "kind" : "source", // rival | source - rival процениваемый сайт, source ваши исходные данные "type" : "file", // site | file - site тип данных челевой сайт, file - тип данных фаил "title": "test 1", "state": "processing", // Состояние конкретного магазина "progress": 20, // его прогресс "updated_at": "2019-10-12T07:20:50.52Z" // дата последней обновленной записи }, { "comment": "Сканирование...", "id": 22850, "kind": "rival", "progress": 10, "started_at": "2022-09-22T11:34:43+03:00", "state": "processing", "title": "emex.ru", "type": "site" } ] } ``` ### Получение данных endpoint: api/matcher/export&token=XXXXXXXXXXX REQUEST: ```json { "matcher_id": 10, "size" : 10, // размер страницы (0 вернет все данные) "page" : 2, // запрашиваема странца, если будет больше чем возможно вернуть, вернется код 404 "render" : "autoparts", "parts_type" : ["direct"] // direct | original | replace | analog | others } ``` RESPONSE: ```json { "data": [], // данные "page": 249, // запрощенная страница (по которой возвращенны данные) "size": 10, // размер запрошенной страницы "total": 2712 // всего строк в данных, не страниц, строк. } ```