groups Группы запросов проекта
Группа groups управляет группами поисковых запросов проекта: отдаёт их список, создаёт группу (сразу с новыми запросами), удаляет группы и переносит запросы из одной группы в другую. Изменения — те же, что на странице «Управление запросами» в интерфейсе, с теми же проверками. Лимиты не тратятся.
- Адрес
/projects/api/v1/groups/<метод>- Доступ
get— любой доступ к проекту;add,delete,move— владелец или доступ на запись- Лимиты
- не тратит
Список групп
/projects/api/v1/groups/get
Группы проекта и системная группа «Общая» (id 1). Отдаётся массивом без обёртки status/result.
Тип группы метод не фильтрует, поэтому в списке могут оказаться и группы URL проекта. Класть в них поисковые запросы нельзя: add, delete и move такие группы не примут.
Параметры query
-
tokenstring обязательныйКлюч API из настроек аккаунта — тот же, чтоkeyу методов инструментов. -
project_idint обязательныйID проекта. Виден в адресе страницы проекта и в ответе projects/get.
Ответ
-
[].idstringID группы. -
[].namestringНазвание группы.
Создать группу
/projects/api/v1/groups/add
Создаёт группу и, если переданы queries, добавляет в неё новые запросы. Если группа с таким названием в проекте уже есть (или это «Общая»), новая не создаётся — запросы добавятся в существующую. Больше 50 запросов добавляются в фоне: ответ приходит сразу, по завершении придёт уведомление.
Число запросов в проекте ограничено так же, как в интерфейсе. Если новые запросы не помещаются, ни один не добавляется и придёт ошибка 52, но сама группа при этом уже создана.
Параметры query и JSON-тело
-
tokenstring обязательныйКлюч API владельца проекта или пользователя с доступом на запись. Промо- и тестовый ключи не принимаются. -
project_idint обязательныйID проекта. Виден в адресе страницы проекта и в ответе projects/get. -
namestring обязательныйНазвание группы. -
orderintСортировка группы в списке.0тоже даёт значение по умолчанию. -
queriesarrayФразы для группы: массив или строка через|. Фразы чистятся от спецсимволов и, безkeep_case, приводятся к нижнему регистру. -
keep_caseintСохранить регистр фраз.
Ответ
-
result.messagestringГотово.или сообщение о том, что добавление запущено в фоне. -
result.group_idintID созданной или найденной группы.
Удалить группы
/projects/api/v1/groups/delete
Удаляет группы проекта. Запросы по умолчанию не теряются: они переезжают в «Общую» или в группу move_to_group_id вместе со всеми позициями и историей. Системную группу «Общая» удалить нельзя.
С with_queries=1 вместе с группами безвозвратно удаляются их запросы с историей позиций — в том числе те, что состоят ещё и в других группах. Больше 50 запросов удаляются в фоне.
Параметры query и JSON-тело
-
tokenstring обязательныйКлюч API владельца проекта или пользователя с доступом на запись. Промо- и тестовый ключи не принимаются. -
project_idint обязательныйID проекта. Виден в адресе страницы проекта и в ответе projects/get. -
group_idsarray обязательныйID групп из groups/get: массив или строка через запятую. Для одной группы можно передатьgroup_id. -
move_to_group_idintКуда перенести запросы удаляемых групп. Своя группа проекта или «Общая». Не учитывается приwith_queries=1. -
with_queriesintУдалить группы вместе с запросами.
Ответ
-
result.messagestringЧто сделано; при фоновом удалении — сообщение о запуске. -
result.deletedint[]ID удалённых групп.
Перенести запросы в другую группу
/projects/api/v1/groups/move
Убирает запросы из группы from_group_id и добавляет в группу назначения. Меняется только связь «запрос — группа»: позиции, история, продвигаемые URL и частоты привязаны к самому запросу и остаются при нём. Остальные группы запроса не затрагиваются. Перенос атомарный — при сбое ни один запрос не окажется вне обеих групп.
Параметры query и JSON-тело
-
tokenstring обязательныйКлюч API владельца проекта или пользователя с доступом на запись. Промо- и тестовый ключи не принимаются. -
project_idint обязательныйID проекта. Виден в адресе страницы проекта и в ответе projects/get. -
query_idsarray обязательныйID запросов проекта (из queries/get): массив или строка через запятую, до 1000. Все должны быть из этого проекта и состоять вfrom_group_id, иначе ничего не переносится и придёт ошибка52со списком лишних ID. -
from_group_idint обязательныйГруппа, из которой переносятся запросы. -
group_idintГруппа назначения: своя группа проекта или «Общая». Нужен этот параметр илиgroup_name. -
group_namestringНазвание группы назначения вместоgroup_id: найдётся или создастся. Приоритетнееgroup_id.
Ответ
-
result.messagestringВсегдаГотово. -
result.actionstringВсегдаmove. -
result.countintСколько запросов перенесено. -
result.group_idintТолько сgroup_name: ID найденной или созданной группы.
Ошибки
| Код | Сообщение | Когда |
|---|---|---|
50 |
access error |
Ключ не передан или не найден, проекта нет, или у владельца ключа нет к нему доступа. Для add, delete, move — ещё и доступ только на чтение или промо-/тестовый ключ. result пустой. |
51 |
wrong project id |
add, delete, move: не передан project_id. |
52 |
wrong request data |
add, delete, move: причина — в result.error. Группа не найдена в проекте (в том числе попытка удалить «Общую»), пустое название, запросы не из этого проекта или не состоят в from_group_id, превышен лимит запросов, фоновая операция уже идёт. |
Как устроены группы
- Запрос может состоять в нескольких группах сразу. Поэтому в queries/get такой запрос встречается несколько раз — по строке на группу, а в positions/get его группы перечислены через запятую.
- «Общая» (
id1) — системная группа, одна на все проекты. Её нельзя переименовать или удалить, но класть в неё запросы можно. Название «Общая» вgroup_name,nameилиgroupу queries/set указывает на неё, дубликат не создаётся. - Запросы без единой группы в интерфейсе видны как «Без группы». В
positions/getу нихgroup_id=0.
Формат запроса и ответа
add, delete и move принимают параметры в JSON-теле, в форме или в query-строке — в таком порядке приоритета. Списки — массивом или строкой с разделителем.
groups/get отдаёт массив без обёртки status/result — так сложилось исторически. HTTP-код всегда 200.