api/README.md
2022-10-06 13:37:22 +03:00

195 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Дополнительный формат 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 // всего строк в данных, не страниц, строк.
}
```