Как работать с папками
Папка объединяет объекты, чтобы спрашивать данные сразу по всему набору.
Не нужно запрашивать объекты по одному и складывать результаты у себя: положите их в папку и спрашивайте данные по ней целиком.
curl "https://api.rewio.ru/v3/reviews?folder_id=7&limit=50" \
-H "X-API-Key: hrev_ВАШ_КЛЮЧ"
curl "https://api.rewio.ru/v3/analytics?folder_id=7" \
-H "X-API-Key: hrev_ВАШ_КЛЮЧ"Как устроено
Папка «Сеть Север» (folder_id: 7)
├── Объект «Гранд Отель» → ссылки → отзывы…
├── Объект «Приморская» → ссылки → отзывы…
└── Подпапка «Москва» (folder_id: 12)
├── Объект «Тверская» → ссылки → отзывы…
└── Объект «Арбат» → ссылки → отзывы…- Максимальная глубина – два уровня. Папка → подпапка → объекты. Попытка вложить
подпапку в подпапку –
400 folder_depth_exceeded. - У подпапки один родитель, а объект может лежать в скольких угодно папках – например, и в «Сеть Север», и в «Премиум-сегмент».
- Запрос по родительской папке возвращает объединение: её собственные объекты плюс объекты всех её подпапок. Ссылка, попавшая в несколько объектов одной папки, учитывается один раз: ни отзывы, ни метрики не удваиваются.
- Папки не тарифицируются: место в лимите занимают объекты. Ограничение одно – не больше 1000 живых папок на аккаунт.
Управление папками
Пять методов. Для чтения хватит ключа read_only, для остальных нужен full.
| Метод | Что делает |
|---|---|
POST /v3/folders | Создать – сразу с составом и, если нужно, внутри другой папки |
GET /v3/folders | Все папки с подпапками и объектами в них |
GET /v3/folders/{folder_id} | Одна папка со своими объектами и подпапками |
PATCH /v3/folders/{folder_id} | Переименовать, перенести и сменить состав одним вызовом |
DELETE /v3/folders/{folder_id} | Удалить папку. Объекты внутри остаются |
GET /v3/folders отдаёт дерево целиком: в data – корневые папки, подпапки лежат
внутри своего родителя в поле subfolders. Порядок и там, и там: по названию, при
совпадении – по id; сортировка регистронезависимая.
{
"data": [
{
"id": 7,
"user_id": 42,
"name": "Сеть Север",
"created_at": "2026-07-28T09:14:02",
"parent_folder_id": null,
"objects": [{ "id": 20, "name": "Гранд Отель" }],
"subfolders": [
{
"id": 12,
"user_id": 42,
"name": "Москва",
"created_at": "2026-07-28T09:20:41",
"parent_folder_id": 7,
"objects": [{ "id": 31, "name": "Тверская" }],
"subfolders": []
}
]
}
]
}Состав у каждой папки свой: объекты подпапки в objects родителя не попадают, хотя в
выдачу по его folder_id войдут. Нужна одна ветка вместо всего дерева, запросите
GET /v3/folders/{folder_id}; для подпапки он вернёт её саму с пустым subfolders.
object_ids в POST и PATCH – это полная замена состава, а не добавление.
Прислали [3, 4] – состав стал ровно [3, 4]. Прислали [] – состав очищен.
Не передали поле вовсе – состав не тронут.
Объект, которого у вас нет (чужой, удалённый или несуществующий), остальной состав не отменяет.
Он просто не попадёт в папку, а его идентификатор вернётся в ignored_object_ids.
На вход идут идентификаторы (object_ids), а в ответе состав приходит объектами
с названиями (objects), чтобы нарисовать дерево, не запрашивая объекты отдельно.
Повторный POST с тем же заголовком Idempotency-Key вернёт ту же папку и не
создаст вторую. Названия папок не обязаны быть уникальными, так что на таймауте
клиента это единственная защита от дубля.
Удалить папку с живыми подпапками нельзя – 409 folder_not_empty: сначала
удалите или перенесите их. Удалённая подпапка удалению родителя не мешает.
Что попадает в выдачу
Состав папки и то, что реально вернётся, – не одно и то же:
- Выключенный объект (
is_active=false) остаётся виден в составе черезGET /v3/folders, но отзывов и аналитики не даёт. Прямой запрос по такому объекту отвечает404, а внутри папки он молча отсутствует. - Удалённый объект исчезает и из состава, и из выдачи.
- Выключенная ссылка внутри живого объекта данных не даёт.
Если папка вернула пусто, проверьте состав через GET /v3/folders, а затем
is_active у объектов и ссылок.
Адресация: ровно один из двух
object_id и folder_id взаимоисключимы на GET /v3/reviews,
GET /v3/analytics и GET /v3/analytics/timeseries:
| Что прислали | Ответ |
|---|---|
только object_id | данные по одному объекту |
только folder_id | данные по всей папке |
| оба сразу | 400 group_and_folder_conflict |
| ни одного | 400 group_or_folder_required |
link_ids и source_ids фильтруют внутри состава папки.
В аналитике by_source схлопывает одну площадку разных объектов в одну строку с
суммой, а meta показывает фактический состав, попавший в расчёт:
{
"meta": {
"object_id": null,
"folder_id": 7,
"object_ids": [20, 21, 34],
"published_from": "2000-01-01",
"published_to": "2026-07-28",
"source_ids": [1, 3],
"generated_at": "2026-07-28T09:20:11Z"
}
}Поле meta.object_id присутствует всегда: в папочном режиме оно приходит null,
а не пропадает.