Чтение шагов автоматизации
Для вопроса об одном сообщении или условии не обязательно читать всю автоматизацию. Сначала найдите шаг, затем запросите его полные настройки. Это уменьшает объём данных в контексте агента, сохраняя возможность прочитать связанные шаги по необходимости.
Оба метода ниже только читают данные. Они не меняют черновик, не запускают процессы и не публикуют автоматизацию. Нужно право can_view_automations в её проекте и серверный API-ключ или OAuth-токен. AUTOMATION_ID в примерах — ID автоматизации, NODE_ID — UUID шага.
Найдите подходящие шаги
GET /api/automations/{automationId}/nodes/search возвращает компактный список: node_id, name и type, без полных настроек шагов.
curl --fail-with-body --get \
"https://api.senler.io/api/automations/$AUTOMATION_ID/nodes/search" \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--data-urlencode "view=draft" \
--data-urlencode "search=Спасибо за подписку" \
--data-urlencode "limit=20"
view:draftдля сохранённого черновика илиpublishedдля опубликованной версии. По умолчаниюdraft.search: часть названия шага или текста сообщения, до 200 символов. Регистр не важен; пробелы и переносы строк считаются разделителями слов. Это поиск текста, не регулярное выражение.types: типы шагов для отдельного фильтра. Допустимые значения можно получить методомgetNodeTypes.node_ids: необязательный список из 1–20 UUID через запятую или массивом. Ограничивает поиск конкретными шагами, например ID из отчёта диагностики.limit: размер страницы, по умолчанию 20, максимум 100.cursor:next_cursorиз предыдущего ответа для следующей страницы.expected_revision: необязательная проверка ревизии из предыдущего ответа. Если схема изменилась, сервер вернёт409вместо данных другой версии.
Ответ также содержит view, revision, version_id и next_cursor. Сохраните revision для следующего запроса. Если next_cursor равен null, следующей страницы нет. Без search можно получить список всех шагов или отфильтровать его только по types.
Если автоматизация ещё не опубликована, используйте view=draft: запрос published вернёт 404, а не черновик вместо рабочей версии.
Когда ID уже известен, передайте node_ids=NODE_ID, а не UUID в search: текстовый поиск работает по названию и сообщению. node_ids, search и types применяются одновременно. Чтобы проверить наличие шага, не добавляйте текстовый фильтр и фильтр типа: они могут исключить существующий шаг из ответа. Поиск возвращает найденный шаг даже с ошибками в его настройках; это не подтверждение готовности к публикации.
Прочитайте настройки и связи
GET /api/automations/{automationId}/nodes принимает от 1 до 20 UUID в node_ids. Передайте expected_revision из поиска и тот же view:
curl --fail-with-body --get \
"https://api.senler.io/api/automations/$AUTOMATION_ID/nodes" \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--data-urlencode "view=draft" \
--data-urlencode "node_ids=$NODE_ID" \
--data-urlencode "expected_revision=$REVISION" \
--data-urlencode "include_edges=true" \
--data-urlencode "edges_limit=50"
Несколько ID можно передать через запятую. В nodes приходят полные настройки найденных шагов в порядке запрошенных ID; отсутствующие ID перечислены в missing_node_ids.
Без include_edges=true связи не включаются. С ним ответ содержит страницу входящих и исходящих связей выбранных шагов. edges_limit по умолчанию равен 50, максимум — 200. Для продолжения передайте edges_next_cursor как edges_cursor, сохранив тот же набор node_ids, view и expected_revision.
Сами соседние шаги автоматически не загружаются: при необходимости запросите их по ID из связей. Для полного обзора схемы используйте getGraph.
Сохраняйте одну версию данных
expected_revision помогает не соединить результаты поиска со свежими, уже изменёнными настройками. В draft это ревизия черновика, в published — номер опубликованной версии.
Курсоры также связаны с версией данных и параметрами запроса. При ответе 409 о смене контекста повторите поиск с первой страницы без старого курсора и используйте новую revision. Это не означает, что подходящих шагов нет.
Вызовите методы через MCP
В Senler.io User MCP найдите и получите описание методов searchAutomationNodes и getAutomationNodes, затем вызывайте их через execute по возвращённой схеме параметров.
Например, на просьбу «Найди приветствие в этой автоматизации» агент сначала запрашивает компактные результаты, затем читает полные настройки выбранного шага. Если вопрос касается продолжения после сообщения, он дополнительно читает связи и нужные соседние шаги. Для поиска вручную в кабинете используйте «Поиск шагов».