Go to file
2022-10-06 13:37:22 +03:00
examples add info 2022-09-21 20:33:47 +03:00
README.md fix 2022-10-06 13:37:22 +03:00

Дополнительный формат 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)

{
  "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:

{
  "message" : "Описание ошибки если есть",
  "matcher_id" : 10   // Идентификатор созданной сборки
}

Получение списка всех сборок

REQUEST: endpoint api/matcher/list?token=XXXXXX

Обновление исходных записей

endpoint: api/matcher/update&token=XXXXXXXXXXX
REQUEST

{
  "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:

{
  "matcher_id": 10
}

RESPONSE:

{
  "message": "Расшифровка ошибки если есть"
}

Остановка сбора данных

endpoint api/matcher/stop&token=XXXXXXXXXXX
REQUEST:

{
  "matcher_id": 10
}

RESPONSE:

{
  "message": "Расшифровка ошибки если есть"
}

Состояние сборки

endpoint: api/matcher/status REQUEST:

{
  "matcher_id" : 10
}

RESPONSE:

{
  "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:

{
  "matcher_id": 10,
  "size" : 10,			// размер страницы (0 вернет все данные)
  "page" : 2,			// запрашиваема странца, если будет больше чем возможно вернуть, вернется код 404
  "render" : "autoparts",
  "parts_type" : ["direct"] // direct | original | replace | analog | others
}

RESPONSE:

{
  "data": [],		// данные 
  "page": 249,		// запрощенная страница (по которой возвращенны данные)
  "size": 10,		// размер запрошенной страницы
  "total": 2712		// всего строк в данных, не страниц, строк.
}