Поиск сущностей (имя → ID)
Mockarty предоставляет единый эндпоинт универсального пикера: он
переводит человекочитаемое имя в каноничный UUID для всех ключевых типов
сущностей. UI-пикеры (билдер айтемов Тест-плана, билдер расписаний,
билдер вебхуков, объединение Test Runs, DAG-редактор) используют именно
этот эндпоинт. API, CLI, SDK и MCP-инструмент дают одинаковую
поверхность: скрипты и AI-агенты видят те же данные, что и человек в UI.
О URL в примерах: все примеры используют
http://localhost:5770.
Замените на адрес вашей установки. См.
Полезные функции и советы.
Связанные страницы: Руководство по CLI ·
Руководство по SDK · Справочник API
Когда применять
- CI/CD пайплайны — превратить имя Тест-плана в ID перед запуском.
- Кросс-сущностный поиск — найти всё в пространстве имён, что называется
checkout, одним вызовом. - AI-агенты — MCP-агент сначала вызывает
search_entities, чтобы
превратить человеческую фразу в ID, нужные другим инструментам.
Поддерживаемые типы
mock, test_plan, perf_config, fuzz_config, chaos_experiment,
contract_pact, request, collection, ui_test, wiki_page,
whiteboard, test_case, issue, user.
request и collection — сущности API Tester; полезны при построении
тест-планов с функциональными HTTP-шагами. ui_test показывает сохранённые
UI-записи, чтобы пункт тест-плана мог ссылаться на них напрямую. wiki_page
ищет по заголовку и тексту страницы; whiteboard — по имени и описанию
доски. test_case находит тест-кейсы TCM по имени или описанию и вместе с
id возвращает короткий номер кейса. issue находит задачи трекера по
заголовку или ключу (например, MK-12); задачи приватных проектов видны
только их участникам. user находит участников текущего пространства по
логину (алиас member) и возвращает логин вместе с id пользователя — это
подсказки для фильтра «Удалил» на странице Корзины; адреса электронной почты
никогда не возвращаются.
Эндпоинт
| Метод | Путь |
|---|---|
| GET | /api/v1/entity-search |
Параметры запроса:
| Имя | Обязательный | Замечания |
|---|---|---|
type |
да | Один из поддерживаемых типов выше. |
namespace |
нет | Игнорируется для тенант-токенов (claim перевешивает). |
q |
нет | Подстрока, регистр игнорируется, поиск по имени. |
limit |
нет | Размер страницы. По умолчанию 50, потолок 200. |
offset |
нет | Смещение страницы (>= 0). |
Ответ:
{
"items": [
{
"id": "11111111-2222-3333-4444-555555555555",
"type": "test_plan",
"name": "smoke-suite",
"namespace": "production",
"createdAt": "2026-04-19T12:00:00Z",
"numericId": 42
}
],
"total": 1
}
numericId присутствует только у сущностей со стабильным числовым ID
(сейчас — Тест-планы). items всегда возвращается как массив: он может
быть пустым [], но не null. Для test_plan поле total учитывает все
совпадающие активные планы в выбранном пространстве имён, даже если первая
страница содержит лишь часть каталога. Увеличивайте offset, пока не
прочитаете total строк. Символы % и _ в q ищутся как обычный текст.
Аутентификация
Передавайте API-токен через заголовок X-API-Key. Токены создаются в
Настройки → API-токены (или POST /api/v1/auth/tokens). Тенант-токены
молча игнорируют ?namespace= — побеждает пространство имён, привязанный к
токену.
export MOCKARTY_URL=http://localhost:5770
export MOCKARTY_API_TOKEN=mk_7_...
export MOCKARTY_NAMESPACE=default
Найти все Тест-планы со словом “smoke”
cURL
curl -s -H "X-API-Key: $MOCKARTY_API_TOKEN" \
"$MOCKARTY_URL/api/v1/entity-search?type=test_plan&q=smoke&limit=25"
CLI
mockarty-cli search test_plan --query smoke --limit 25
Go
resp, err := client.EntitySearch().Search(ctx, mockarty.EntitySearchRequest{
Type: mockarty.EntityTypeTestPlan,
Query: "smoke",
Limit: 25,
})
for _, it := range resp.Items {
fmt.Printf("%s %s\n", it.ID, it.Name)
}
Python
resp = client.entity_search.search(
entity_type="test_plan",
query="smoke",
limit=25,
)
for item in resp.items:
print(item.id, item.name)
Java
EntitySearchResponse resp = client.entitySearch().search(
new EntitySearchRequest()
.type(EntitySearchRequest.TYPE_TEST_PLAN)
.query("smoke")
.limit(25));
for (EntitySearchResult item : resp.getItems()) {
System.out.println(item.getId() + " " + item.getName());
}
Перебор моков в активном пространстве имён
При поиске моков поле total учитывает все совпадения в доступном каталоге,
включая записи за пределами первой страницы. Если в каталоге больше 10 000
моков, поиск возвращает ошибку вместо неполного результата. При глобальном
поиске выберите одно пространство имён; если оно само больше лимита,
используйте отдельный API списка моков.
cURL
curl -s -H "X-API-Key: $MOCKARTY_API_TOKEN" \
"$MOCKARTY_URL/api/v1/entity-search?type=mock&limit=50&offset=0"
curl -s -H "X-API-Key: $MOCKARTY_API_TOKEN" \
"$MOCKARTY_URL/api/v1/entity-search?type=mock&limit=50&offset=50"
CLI
mockarty-cli search mock --limit 50 --offset 0
mockarty-cli search mock --limit 50 --offset 50
Go
for offset := 0; ; offset += 50 {
resp, err := client.EntitySearch().Search(ctx, mockarty.EntitySearchRequest{
Type: mockarty.EntityTypeMock,
Limit: 50,
Offset: offset,
})
if err != nil || len(resp.Items) == 0 {
break
}
// ... обработать resp.Items
}
JSON-вывод в CLI
CLI поддерживает глобальный флаг --output json, что удобно для
пайплайна с jq в CI:
mockarty-cli --output json search test_plan --query smoke \
| jq -r '.items[] | [.id, .name] | @tsv'
Вызов из AI-агента (MCP)
Агенты ходят во встроенный MCP-сервер Mockarty. Вызывайте инструмент
search_entities перед инструментами, которым нужен ID:
{
"name": "search_entities",
"arguments": {
"type": "test_plan",
"q": "smoke",
"limit": 25
}
}
Агент получает тот же конверт { "items": [...], "total": N } и может
передать items[].id в run_test_plan, get_test_plan и т. п.
Ошибки
| HTTP | Причина |
|---|---|
| 400 | Не указан type, неизвестный type, отрицательный пейджинг. |
| 403 | У вызывающего нет прав на чтение этого пространства имён. |
CLI, SDK и MCP-инструмент возвращают те же ошибки ещё до отправки HTTP-
запроса: опечатка в названии типа отлавливается локально.