Справочник API
Полный справочник REST API для Mockarty. Базовый URL: http://localhost:5770 (по умолчанию).
Все тела запросов/ответов используют Content-Type: application/json, если не указано иное.
URL-адреса в примерах: Все примеры используют localhost:5770 как адрес по умолчанию. Если ваш Mockarty развёрнут на удалённом сервере (например, https://mockarty.company.com или http://192.168.1.50:5770), замените localhost:5770 на реальный адрес. SDK принимают базовый URL в конструкторе клиента, так что его достаточно указать один раз. Подробнее — в Быстром старте.
Совет: Все примеры ниже доступны на нескольких языках. Используйте вкладки для переключения между cURL, CLI и SDK-клиентами. Подробнее об установке и использовании SDK — в Руководстве по SDK. Документация CLI — в Руководстве по CLI.
Hello World: Первый мок за 30 секунд
Создайте мок и вызовите его – две команды, никакой конфигурации:
cURL
# 1. Создаём мок
curl -X POST http://localhost:5770/api/v1/mocks \
-H "Content-Type: application/json" \
-d '{
"id": "hello-world",
"namespace": "sandbox",
"http": {
"route": "/api/greeting",
"httpMethod": "GET"
},
"response": {
"statusCode": 200,
"payload": {
"message": "Hello, World!",
"timestamp": "$.fake.DateTimeISO"
}
}
}'
# 2. Вызываем мок (namespace — часть URL)
curl http://localhost:5770/stubs/sandbox/api/greeting
# Возвращает: {"message": "Hello, World!", "timestamp": "2026-03-22T10:30:00Z"}
CLI
# Установка: https://github.com/mockarty/releases
# 1. Создаём мок (пространство имён по умолчанию "sandbox")
mockarty-cli mock create \
--id hello-world \
--route /api/greeting \
--method GET \
--status 200 \
--body '{"message": "Hello, World!", "timestamp": "$.fake.DateTimeISO"}'
# 2. Вызываем мок — namespace всегда часть URL
curl http://localhost:5770/stubs/sandbox/api/greeting
Go
// go get github.com/mockarty/mockarty-go
package main
import (
"context"
"fmt"
"github.com/mockarty/mockarty-go"
)
func main() {
// Пространство имён по умолчанию "sandbox"
client := mockarty.NewClient("http://localhost:5770",
mockarty.WithAPIKey("mk_YOUR_TOKEN"),
)
mock := mockarty.NewMockBuilder().
ID("hello-world").
HTTP(func(h *mockarty.HTTPBuilder) {
h.Route("/api/greeting").Method("GET")
}).
Response(func(r *mockarty.ResponseBuilder) {
r.Status(200).JSONBody(map[string]any{
"message": "Hello, World!",
"timestamp": "$.fake.DateTimeISO",
})
}).
Build()
resp, err := client.Mocks().Create(context.Background(), mock)
if err != nil {
panic(err)
}
fmt.Printf("Создан: %s (перезаписан: %v)\n", resp.Mock.ID, resp.Overwritten)
}
Python
# pip install mockarty
from mockarty import MockartyClient
from mockarty.builders import MockBuilder
# Пространство имён по умолчанию "sandbox"
client = MockartyClient(
base_url="http://localhost:5770",
api_key="mk_YOUR_TOKEN",
)
mock = (
MockBuilder.http("/api/greeting", "GET")
.id("hello-world")
.respond(200, body={
"message": "Hello, World!",
"timestamp": "$.fake.DateTimeISO",
})
.build()
)
result = client.mocks.create(mock)
print(f"Создан: {result.mock.id}, перезаписан: {result.overwritten}")
Java
// Gradle: implementation "ru.mockarty:mockarty-java:1.0.0"
import ru.mockarty.MockartyClient;
import ru.mockarty.builder.MockBuilder;
import ru.mockarty.model.Mock;
import ru.mockarty.model.SaveMockResponse;
import java.util.Map;
// Пространство имён по умолчанию "sandbox"
try (MockartyClient client = MockartyClient.builder()
.baseUrl("http://localhost:5770")
.apiKey("mk_YOUR_TOKEN")
.build()) {
Mock mock = MockBuilder.http("/api/greeting", "GET")
.id("hello-world")
.respond(200, Map.of(
"message", "Hello, World!",
"timestamp", "$.fake.DateTimeISO"
))
.build();
SaveMockResponse resp = client.mocks().create(mock);
System.out.println("Создан: " + resp.getMock().getId());
}
Kotlin
// Gradle: implementation("ru.mockarty:mockarty-kotlin:1.0.0")
import ru.mockarty.MockartyClient
import ru.mockarty.dsl.createMock
// Пространство имён по умолчанию "sandbox"
val client = MockartyClient.builder()
.baseUrl("http://localhost:5770")
.apiKey("mk_YOUR_TOKEN")
.build()
client.createMock {
id = "hello-world"
http {
route = "/api/greeting"
method = "GET"
}
respond {
statusCode = 200
body = mapOf(
"message" to "Hello, World!",
"timestamp" to "$.fake.DateTimeISO"
)
}
}
Как это работает: Вы определяете мок через POST /api/v1/mocks, затем Mockarty обслуживает его по адресу /stubs/<ваш-маршрут>. Префикс /stubs указывает Mockarty разрешить мок, а не обращаться к API управления. Динамические значения вроде $.fake.DateTimeISO подставляются в момент формирования ответа.

Содержание
- Аутентификация
- API управления моками (публичный)
- API пространств имён
- API хранилищ
- API шаблонов
- Руководство по CI/CD интеграции
- API тестирования API
- API нагрузочного тестирования
- API фаззинга
- API рекордера
- API контрактного тестирования
- API Chaos Engineering
- API администрирования
- Утилиты
- Прокси-эндпоинты протоколов
1. Аутентификация
Mockarty использует два механизма аутентификации: API-токены для программного доступа и сессионные куки для Web UI.
API-токены
Создавайте токены в Web UI (Настройки > API-токены) или через POST /api/v1/auth/tokens.
Передавайте токен в запросах через заголовок:
cURL
# Заголовок X-API-Key (пространство "sandbox" по умолчанию)
curl -H "X-API-Key: mk_YOUR_TOKEN" http://localhost:5770/api/v1/mocks
# Заголовок Authorization: Bearer
curl -H "Authorization: Bearer mk_YOUR_TOKEN" http://localhost:5770/api/v1/mocks
CLI
# Настройка токена глобально (сохраняется в ~/.mockarty-cli/config.yaml)
mockarty-cli config set token mk_YOUR_TOKEN
mockarty-cli config set namespace sandbox
# Или передать для конкретной команды
mockarty-cli mock list --token mk_YOUR_TOKEN
Go
// Токен задаётся через опцию WithAPIKey; пространство по умолчанию "sandbox"
client := mockarty.NewClient("http://localhost:5770",
mockarty.WithAPIKey("mk_YOUR_TOKEN"),
mockarty.WithNamespace("sandbox"), // необязательно, "sandbox" по умолчанию
)
Python
# Токен задаётся через параметр api_key; пространство по умолчанию "sandbox"
client = MockartyClient(
base_url="http://localhost:5770",
api_key="mk_YOUR_TOKEN",
namespace="sandbox", # необязательно, "sandbox" по умолчанию
)
Java
// Токен задаётся через apiKey; пространство по умолчанию "sandbox"
MockartyClient client = MockartyClient.builder()
.baseUrl("http://localhost:5770")
.apiKey("mk_YOUR_TOKEN")
.namespace("sandbox") // необязательно, "sandbox" по умолчанию
.build();
Kotlin
// Токен задаётся через apiKey; пространство по умолчанию "sandbox"
val client = MockartyClient.builder()
.baseUrl("http://localhost:5770")
.apiKey("mk_YOUR_TOKEN")
.namespace("sandbox") // необязательно, "sandbox" по умолчанию
.build()
Сессионная аутентификация
Для Web UI и доступа через браузер:
# Вход (возвращает сессионную куку)
curl -c cookies.txt -X POST http://localhost:5770/api/v1/auth/login \
-d '{"username": "admin", "password": "secret"}'
# Использование сессионной куки
curl -b cookies.txt http://localhost:5770/api/v1/mocks
Эндпоинты аутентификации
| Метод |
Путь |
Авторизация |
Описание |
| POST |
/api/v1/auth/login |
нет |
Вход по логину/паролю |
| POST |
/api/v1/auth/logout |
пользователь |
Завершение сессии |
| GET |
/api/v1/auth/me |
пользователь |
Информация о текущем пользователе |
| POST |
/api/v1/auth/change-password |
пользователь |
Смена пароля |
| POST |
/api/v1/auth/tokens |
пользователь |
Создание API-токена |
| GET |
/api/v1/auth/tokens |
пользователь |
Список своих API-токенов |
| GET |
/api/v1/auth/tokens/:id |
пользователь |
Детали токена |
| PATCH |
/api/v1/auth/tokens/:id |
пользователь |
Обновление токена (имя, срок действия) |
| DELETE |
/api/v1/auth/tokens/:id |
пользователь |
Отзыв токена |
| POST |
/api/v1/auth/ldap/login |
нет |
Вход через LDAP |
| GET |
/api/v1/auth/oauth/login/:provider |
нет |
Начало OAuth-потока |
| POST |
/api/v1/auth/forgot-password |
нет |
Запрос сброса пароля по email |
| GET |
/api/v1/auth/verify-email |
нет |
Подтверждение email |
Ограничение частоты запросов
Запросы к API ограничены в зависимости от лицензии. Лимиты применяются отдельно для каждого API-ключа.
2. API управления моками (публичный)

Эндпоинты для управления определениями моков. Доступны на корневом сервере (порт 5770). Требуют аутентификации с правом read или write.
Создание/обновление мока
POST /api/v1/mocks | Авторизация: пользователь (write)
Создаёт новый мок или перезаписывает существующий (по id).
cURL
curl -X POST http://localhost:5770/api/v1/mocks \
-H "X-API-Key: mk_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": "get-user",
"namespace": "sandbox",
"http": {
"route": "/api/users/list",
"httpMethod": "GET"
},
"response": {
"statusCode": 200,
"payload": {
"id": "$.fake.UUID",
"name": "$.fake.FirstName",
"email": "$.fake.Email"
}
}
}'
CLI
# Пространство имён по умолчанию "sandbox"
mockarty-cli mock create \
--id get-user \
--route /api/users/list \
--method GET \
--status 200 \
--body '{"id": "$.fake.UUID", "name": "$.fake.FirstName", "email": "$.fake.Email"}'
Go
mock := mockarty.NewMockBuilder().
ID("get-user").
Namespace("sandbox"). // необязательно, "sandbox" по умолчанию
HTTP(func(h *mockarty.HTTPBuilder) {
h.Route("/api/users/list").Method("GET")
}).
Response(func(r *mockarty.ResponseBuilder) {
r.Status(200).JSONBody(map[string]any{
"id": "$.fake.UUID",
"name": "$.fake.FirstName",
"email": "$.fake.Email",
})
}).
Build()
resp, err := client.Mocks().Create(context.Background(), mock)
Python
mock = (
MockBuilder.http("/api/users/list", "GET")
.id("get-user")
.namespace("sandbox") # необязательно, "sandbox" по умолчанию
.respond(200, body={
"id": "$.fake.UUID",
"name": "$.fake.FirstName",
"email": "$.fake.Email",
})
.build()
)
result = client.mocks.create(mock)
Java
Mock mock = MockBuilder.http("/api/users/list", "GET")
.id("get-user")
.namespace("sandbox") // необязательно, "sandbox" по умолчанию
.respond(200, Map.of(
"id", "$.fake.UUID",
"name", "$.fake.FirstName",
"email", "$.fake.Email"
))
.build();
SaveMockResponse resp = client.mocks().create(mock);
Kotlin
client.createMock {
id = "get-user"
namespace = "sandbox" // необязательно, "sandbox" по умолчанию
http {
route = "/api/users/list"
method = "GET"
}
respond {
statusCode = 200
body = mapOf(
"id" to "$.fake.UUID",
"name" to "$.fake.FirstName",
"email" to "$.fake.Email"
)
}
}
Ответ:
{
"overwritten": false,
"mock": {
"id": "get-user",
"namespace": "default",
"createdAt": 1704096000000,
"useCounter": 0
}
}
Полная структура мока (все поля необязательны, кроме id):
| Поле |
Тип |
Описание |
id |
string |
Уникальный идентификатор мока |
namespace |
string |
Пространство имён (по умолчанию: “default”) |
chainId |
string |
ID цепочки для связанных моков |
priority |
int64 |
Моки с высшим приоритетом сопоставляются первыми (по умолчанию: 0) |
ttl |
int64 |
Время жизни в миллисекундах (0 = без ограничений) |
useLimiter |
int32 |
Максимальное число использований (0 = без ограничений) |
http |
object |
HTTP-конфигурация (route, httpMethod, conditions, queryParams, header) |
grpc |
object |
gRPC-конфигурация (service, method, conditions, meta) |
mcp |
object |
MCP-конфигурация (serverName, tool, conditions) |
soap |
object |
SOAP-конфигурация (soapAction, route) |
graphql |
object |
GraphQL-конфигурация (field, operation) |
smtp |
object |
SMTP-конфигурация (serverName, senderConditions, recipientConditions, subjectConditions, bodyConditions, headerConditions) |
socket |
object |
WebSocket/TCP/UDP-конфигурация (socketType, serverName, event) |
kafka |
object |
Kafka-конфигурация (topic, serverName) |
rabbitmq |
object |
RabbitMQ-конфигурация (queue, serverName) |
sse |
object |
SSE-конфигурация (route, serverName) |
response |
object |
Ответ: statusCode, payload, headers, delay, payloadTemplatePath |
oneOf |
object |
Множественные ответы: order (“order”/“random”), массив responses |
proxy |
object |
Режим прокси: URL target |
webhooks |
array |
Вебхук-колбэки, вызываемые при совпадении мока (см. Вебхуки и колбэки) |
tags |
array |
Строковые теги для категоризации и фильтрации моков |
folderId |
string |
ID папки для иерархической организации моков |
pathPrefix |
string |
Единый префикс пути для нативных протоколов (HTTP, SOAP, MCP, SSE, GraphQL) |
serverName |
string |
Имя сервера для группировки моков по окружениям (например, test, stage, prod) – используется для Socket и gRPC |
mStore |
object |
Хранилище мока – эфемерные данные ключ-значение, доступные только при обработке данного мока |
extract |
object |
Извлечение данных: mStore, cStore, gStore |
Структура условия (Condition)
Что такое условия? Условия позволяют возвращать разные ответы мока в зависимости от входящего запроса. Без условий мок соответствует любому запросу к его маршруту. С условиями Mockarty анализирует тело запроса, заголовки или параметры и выбирает мок только если все условия выполнены. Это полезно, когда несколько моков имеют один маршрут, но должны отвечать по-разному в зависимости от содержимого запроса (например, вернуть ошибку, когда $.body.status равен "invalid").
Массив conditions внутри конфигурационных объектов http, grpc и mcp управляет выбором мока. Каждое условие — объект со следующими полями:
| Поле |
Тип |
Обязательно |
Описание |
path |
string |
Да |
Выражение пути для проверки (например, $.body.user.role, имя заголовка, имя параметра запроса) |
assertAction |
string |
Да |
Операция сравнения (см. таблицу ниже) |
value |
any |
Зависит |
Ожидаемое значение для сравнения. Обязательно для equals, contains, not_equals, not_contains, matches. Игнорируется для any, notEmpty, empty. |
decode |
string |
Нет |
Установите "base64" для base64-декодирования извлечённого значения перед сравнением. Полезно, когда запрос содержит base64-кодированные поля. |
sortArray |
bool |
Нет |
Сортировать массивы перед сравнением. Переопределяет глобальный флаг sortArray конфигурации протокола для данного условия. |
valueFromFile |
string |
Нет |
Путь к файлу, содержимое которого используется как значение условия вместо value. Путь поддерживает шаблонную обработку ($.fake.*, ссылки на хранилища). Имеет приоритет над value. |
Действия проверки (Assert actions):
| Действие |
Описание |
Значение обязательно |
equals |
Точное совпадение (глубокое сравнение для объектов/массивов) |
Да |
contains |
Поиск подстроки для строк, проверка подмножества для объектов, наличие элемента для массивов |
Да |
not_equals |
Не равно значению |
Да |
not_contains |
Не содержит подстроку или подмножество |
Да |
matches |
Сопоставление с регулярным выражением |
Да (шаблон регулярного выражения) |
any |
Всегда совпадает (значение игнорируется) |
Нет |
notEmpty |
Значение существует и непустое (не null, непустая строка/массив/объект) |
Нет |
empty |
Значение пустое или null ("", [], {} или null) |
Нет |
Примечание: Устаревший псевдоним match также принимается и работает идентично matches.
Пример с расширенными полями условий:
{
"id": "base64-body-mock",
"http": {
"route": "/api/validate",
"httpMethod": "POST",
"conditions": [
{
"path": "$.body.encodedData",
"assertAction": "contains",
"value": "expected-content",
"decode": "base64"
},
{
"path": "$.body.items",
"assertAction": "equals",
"value": ["b", "a", "c"],
"sortArray": true
},
{
"path": "$.body.payload",
"assertAction": "equals",
"valueFromFile": "/templates/expected-payload.json"
}
]
},
"response": {
"statusCode": 200,
"payload": {"status": "validated"}
}
}
Примечание: decode, sortArray и valueFromFile — поля только для API, они не доступны в визуальном конструкторе Web UI.
Получение мока
GET /api/v1/mocks/:id | Авторизация: пользователь (read)
cURL
curl -H "X-API-Key: mk_YOUR_TOKEN" http://localhost:5770/api/v1/mocks/get-user
CLI
mockarty-cli mock get get-user
Go
mock, err := client.Mocks().Get(context.Background(), "get-user")
Python
mock = client.mocks.get("get-user")
Java
Mock mock = client.mocks().get("get-user");
Kotlin
val mock = client.mocks().get("get-user")
Список моков
GET /api/v1/mocks | Авторизация: пользователь (read)
| Параметр |
Тип |
Описание |
offset |
int |
Смещение пагинации (по умолчанию: 0) |
limit |
int |
Размер страницы (по умолчанию: 50) |
namespace |
string |
Фильтр по пространству имён |
cURL
# Пространство "sandbox" по умолчанию
curl -H "X-API-Key: mk_YOUR_TOKEN" \
"http://localhost:5770/api/v1/mocks?namespace=sandbox&limit=10"
CLI
mockarty-cli mock list --namespace sandbox --limit 10
Go
page, err := client.Mocks().List(context.Background(), &mockarty.ListMocksOptions{
Namespace: "sandbox", // необязательно, "sandbox" по умолчанию
Limit: 10,
})
for _, m := range page.Items {
fmt.Println(m.ID)
}
Python
page = client.mocks.list(namespace="sandbox", limit=10)
for mock in page.items:
print(mock.id)
Java
Page<Mock> page = client.mocks().list("sandbox", null, null, 0, 10);
for (Mock m : page.getItems()) {
System.out.println(m.getId());
}
Kotlin
val page = client.mocks().list("sandbox", null, null, 0, 10)
page.items.forEach { println(it.id) }
Удаление мока (мягкое)
DELETE /api/v1/mocks/:id | Авторизация: пользователь (delete)
cURL
curl -X DELETE -H "X-API-Key: mk_YOUR_TOKEN" \
http://localhost:5770/api/v1/mocks/get-user
CLI
mockarty-cli mock delete get-user
Go
err := client.Mocks().Delete(context.Background(), "get-user")
Python
client.mocks.delete("get-user")
Java
client.mocks().delete("get-user");
Kotlin
client.mocks().delete("get-user")
Восстановление мока
GET /api/v1/mocks/:id | Авторизация: пользователь (write)
Полное удаление мока
DELETE /api/v1/mocks/:id/purge | Авторизация: пользователь (delete)
Журналы запросов мока
GET /api/v1/mocks/:id/logs | Авторизация: пользователь (read)
Возвращает историю запросов к моку.
{
"id": "get-user",
"requests": [
{
"calledAt": "2024-01-01T10:05:00Z",
"req": {
"header": {},
"body": {},
"queryParam": {},
"url": "/stubs/api/users/123"
}
}
]
}
Цепочки моков
| Метод |
Путь |
Описание |
| GET |
/api/v1/mocks/chains/:id |
Получить все моки в цепочке |
| DELETE |
/api/v1/mocks/chains/:id |
Удалить всю цепочку |
Пакетное создание
POST /api/v1/mocks/batch | Авторизация: пользователь (write)
Создание нескольких моков за один запрос.
cURL
curl -X POST http://localhost:5770/api/v1/mocks/batch \
-H "X-API-Key: mk_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '[
{"id": "mock-1", "namespace": "sandbox", "http": {"route": "/api/a", "httpMethod": "GET"}, "response": {"statusCode": 200}},
{"id": "mock-2", "namespace": "sandbox", "http": {"route": "/api/b", "httpMethod": "GET"}, "response": {"statusCode": 200}}
]'
CLI
# Пакетное создание из JSON-файла (пространство по умолчанию "sandbox")
mockarty-cli mock create --file mocks.json --batch
Go
mocks := []*mockarty.Mock{
mockarty.NewMockBuilder().ID("mock-1").
HTTP(func(h *mockarty.HTTPBuilder) { h.Route("/api/a").Method("GET") }).
Response(func(r *mockarty.ResponseBuilder) { r.Status(200) }).
Build(),
mockarty.NewMockBuilder().ID("mock-2").
HTTP(func(h *mockarty.HTTPBuilder) { h.Route("/api/b").Method("GET") }).
Response(func(r *mockarty.ResponseBuilder) { r.Status(200) }).
Build(),
}
err := client.Mocks().BatchCreate(context.Background(), mocks)
Python
mocks = [
MockBuilder.http("/api/a", "GET").id("mock-1").respond(200).build(),
MockBuilder.http("/api/b", "GET").id("mock-2").respond(200).build(),
]
results = client.mocks.batch_create(mocks)
Java
// В Java SDK нет отдельного метода batchCreate;
// используйте цикл для создания каждого мока по отдельности
Mock mock1 = MockBuilder.http("/api/a", "GET").id("mock-1").respond(200).build();
Mock mock2 = MockBuilder.http("/api/b", "GET").id("mock-2").respond(200).build();
client.mocks().create(mock1);
client.mocks().create(mock2);
Частичное обновление (Patch)
PATCH /api/v1/mocks/:id | Авторизация: пользователь (write)
Частичное обновление мока (переданные поля объединяются с существующим моком).
cURL
curl -X PATCH http://localhost:5770/api/v1/mocks/get-user \
-H "X-API-Key: mk_YOUR_TOKEN" \
-d '{"response": {"statusCode": 201}}'
CLI
# CLI не предоставляет отдельной команды patch.
# Экспортируйте мок, отредактируйте его локально и примените полное определение —
# сервер обновит существующий мок по id.
mockarty-cli mock get get-user -o json > mock.json
# отредактируйте mock.json (например, измените response.statusCode на 201)
mockarty-cli mock create -f mock.json
Go
updated, err := client.Mocks().Patch(context.Background(), "get-user", map[string]any{
"response": map[string]any{"statusCode": 201},
})
Python
updated = client.mocks.patch("get-user", {"response": {"statusCode": 201}})
Java
Mock updated = client.mocks().patchMock("get-user", Map.of(
"response", Map.of("statusCode", 201)
));
История версий мока
| Метод |
Путь |
Описание |
| GET |
/api/v1/mocks/:id/versions |
Список истории версий мока |
| GET |
/api/v1/mocks/:id/versions/:version |
Получение конкретной версии |
| POST |
/api/v1/mocks/:id/versions/:version/restore |
Восстановление мока до предыдущей версии |
Предпросмотр разрешения мока
GET /api/v1/mocks/preview | Авторизация: пользователь (read)
Предпросмотр того, какой мок будет разрешён для указанного маршрута/метода без фактического вызова stub-эндпоинта.
Пакетные операции (UI API)
| Метод |
Путь |
Описание |
| DELETE |
/api/v1/mocks/batch |
Пакетное мягкое удаление: {"ids": [...]} |
| POST |
/api/v1/mocks/batch/restore |
Пакетное восстановление: {"ids": [...]} |
| PATCH |
/api/v1/mocks/batch/tags |
Пакетное обновление тегов: {"ids": [...], "addTags": [...], "removeTags": [...]} |
Теги
| Метод |
Путь |
Описание |
| GET |
/api/v1/tags |
Список всех тегов |
| POST |
/api/v1/tags |
Создание нового тега |
Папки моков
Организация моков в папки для удобного управления.
| Метод |
Путь |
Описание |
| GET |
/api/v1/mock-folders |
Список всех папок |
| POST |
/api/v1/mock-folders |
Создание папки |
| PUT |
/api/v1/mock-folders/:id |
Обновление папки |
| DELETE |
/api/v1/mock-folders/:id |
Удаление папки |
| PATCH |
/api/v1/mock-folders/:id/move |
Перемещение папки (изменение порядка/родителя) |
| PATCH |
/api/v1/mocks/batch/move |
Перемещение моков в папку |
Неопределённые запросы
Перехваченные запросы, не совпавшие ни с одним моком.
| Метод |
Путь |
Описание |
| GET |
/api/v1/undefined-requests |
Список неопределённых запросов |
| PATCH |
/api/v1/undefined-requests/:id/ignore |
Игнорировать неопределённый запрос |
| DELETE |
/api/v1/undefined-requests |
Удалить выбранные неопределённые запросы |
| DELETE |
/api/v1/undefined-requests/all |
Очистить все неопределённые запросы |
| POST |
/api/v1/undefined-requests/:requestId/create-mock |
Создать мок из неопределённого запроса |
3. API пространств имён
| Метод |
Путь |
Авторизация |
Описание |
| POST |
/api/v1/namespaces |
пользователь (write) |
Создание пространства имён: {"name": "staging"} |
| GET |
/api/v1/namespaces |
пользователь (read) |
Список пространств имён |
| POST |
/api/v1/mocks/copy-to-namespace |
пользователь (write) |
Копирование моков между пространствами |
| GET |
/api/v1/namespaces |
пользователь |
Список доступных пространств |
| POST |
/api/v1/namespaces |
админ |
Создание пространства (админ-маршрут) |
Пример копирования моков:
cURL
curl -X POST -H "X-API-Key: mk_YOUR_TOKEN" \
http://localhost:5770/api/v1/mocks/copy-to-namespace \
-d '{
"sourceNamespace": "staging",
"targetNamespace": "production",
"mockIds": ["mock-1", "mock-2"]
}'
CLI
mockarty-cli namespace copy \
--from staging --to production \
--ids mock-1,mock-2
Go
err := client.Mocks().CopyToNamespace(context.Background(),
[]string{"mock-1", "mock-2"}, "production",
)
Python
client.mocks.copy_to_namespace(
ids=["mock-1", "mock-2"],
target_namespace="production",
)
Java
client.mocks().copyToNamespace(
List.of("mock-1", "mock-2"),
"production"
);
4. API хранилищ

Три типа хранилищ для моков с состоянием. Подробнее в Системе хранилищ.
Глобальное хранилище
| Метод |
Путь |
Авторизация |
Описание |
| GET |
/api/v1/stores/global?namespace=default |
пользователь (read) |
Получить все данные |
| POST |
/api/v1/stores/global |
пользователь (write) |
Установить пару ключ-значение: {"key": "...", "value": "...", "namespace": "..."} |
| DELETE |
/api/v1/stores/global/:key?namespace=default |
пользователь (write) |
Удалить ключ (ключ в URL-пути) |
Каждый POST-запрос добавляет одну пару ключ-значение. Для добавления нескольких ключей выполните отдельные запросы.
cURL
# Установить пару ключ-значение (один за запрос)
curl -X POST -H "X-API-Key: mk_YOUR_TOKEN" \
"http://localhost:5770/api/v1/stores/global" \
-d '{"key": "totalUsers", "value": "100", "namespace": "sandbox"}'
curl -X POST -H "X-API-Key: mk_YOUR_TOKEN" \
"http://localhost:5770/api/v1/stores/global" \
-d '{"key": "serviceName", "value": "auth", "namespace": "sandbox"}'
# Прочитать хранилище
curl -H "X-API-Key: mk_YOUR_TOKEN" \
"http://localhost:5770/api/v1/stores/global?namespace=sandbox"
# Удалить ключ (ключ в URL-пути)
curl -X DELETE -H "X-API-Key: mk_YOUR_TOKEN" \
"http://localhost:5770/api/v1/stores/global/totalUsers?namespace=sandbox"
CLI
# Установить значение (пространство по умолчанию "sandbox")
mockarty-cli store global set totalUsers 100
mockarty-cli store global set serviceName auth
# Прочитать хранилище
mockarty-cli store global get
# Удалить ключ
mockarty-cli store global delete totalUsers
Go
// Установить значения (используется пространство клиента по умолчанию "sandbox")
err := client.Stores().GlobalSet(context.Background(), "totalUsers", 100)
err = client.Stores().GlobalSet(context.Background(), "serviceName", "auth")
// Прочитать хранилище
store, err := client.Stores().GlobalGet(context.Background())
fmt.Println(store) // map[totalUsers:100 serviceName:auth ...]
// Удалить ключ
err = client.Stores().GlobalDelete(context.Background(), "totalUsers")
Python
# Установить значения (используется пространство клиента по умолчанию "sandbox")
client.stores.global_set("totalUsers", 100)
client.stores.global_set("serviceName", "auth")
# Или установить несколько значений за раз
client.stores.global_set_many({"totalUsers": 100, "serviceName": "auth"})
# Прочитать хранилище
store = client.stores.global_get()
print(store) # {"totalUsers": 100, "serviceName": "auth"}
# Удалить ключи
client.stores.global_delete("totalUsers")
Java
// Установить значения (используется пространство клиента по умолчанию "sandbox")
client.stores().globalSet("totalUsers", 100);
client.stores().globalSet("serviceName", "auth");
// Прочитать хранилище
Map<String, Object> store = client.stores().globalGet();
System.out.println(store);
// Удалить ключ
client.stores().globalDelete("totalUsers");
Хранилище цепочки
| Метод |
Путь |
Авторизация |
Описание |
| GET |
/api/v1/stores/chain/:id?namespace=default |
пользователь (read) |
Получить хранилище цепочки |
| POST |
/api/v1/stores/chain/:id |
пользователь (write) |
Установить пару ключ-значение: {"key": "...", "value": "...", "namespace": "..."} |
| DELETE |
/api/v1/stores/chain/:id/:key?namespace=default |
пользователь (write) |
Удалить ключ (ключ в URL-пути) |
5. API шаблонов
Загрузка шаблонов ответов для использования в моках через payloadTemplatePath.
| Метод |
Путь |
Авторизация |
Описание |
| GET |
/api/v1/templates |
пользователь (read) |
Список всех шаблонов |
| GET |
/api/v1/templates/:fileName |
пользователь (read) |
Скачать шаблон |
| POST |
/api/v1/templates/:fileName |
пользователь (write) |
Загрузить файл шаблона |
| DELETE |
/api/v1/templates/:fileName |
пользователь (write) |
Удалить шаблон |
Временное хранилище файлов
Временная загрузка файлов для использования в интерфейсе чата с агентом. Файлы автоматически удаляются через 30 минут.
| Метод |
Путь |
Авторизация |
Описание |
| POST |
/api/v1/temp-files/upload |
пользователь (write) |
Загрузить временный файл |
| GET |
/api/v1/temp-files/get/:fileId |
пользователь (read) |
Скачать временный файл |
| DELETE |
/api/v1/temp-files/delete/:fileId |
пользователь (write) |
Удалить временный файл |
Генерация из OpenAPI (сокращённая форма)
| Метод |
Путь |
Авторизация |
Описание |
| POST |
/api/v1/generators/openapi |
пользователь (write) |
Генерация моков из OpenAPI-спецификации |
6. Руководство по CI/CD интеграции
Mockarty предоставляет полное API-покрытие для автоматизации CI/CD. Все примеры используют аутентификацию по API-токену.
6.1 Запуск API-тестов из CI
cURL
TOKEN="mk_YOUR_TOKEN"
BASE="http://localhost:5770/ui/api"
# 1. Создание коллекции
COLLECTION_ID=$(curl -s -X POST "$BASE/api-tester/collections" \
-H "X-API-Key: $TOKEN" \
-d '{"name": "CI Tests", "description": "Automated test suite"}' | jq -r '.id')
# 2. Добавление запроса с тестовым скриптом
curl -X POST "$BASE/api-tester/collections/$COLLECTION_ID/requests" \
-H "X-API-Key: $TOKEN" \
-d '{
"name": "Get Users",
"method": "GET",
"url": "http://localhost:5770/stubs/sandbox/api/users",
"testScript": "mk.test(\"Status is 200\", function() { mk.response.to.have.status(200); });"
}'
# 3. Выполнение коллекции (запускает все запросы + тестовые скрипты)
RUN_ID=$(curl -s -X POST "$BASE/api-tester/collections/$COLLECTION_ID/execute" \
-H "X-API-Key: $TOKEN" \
-d '{}' | jq -r '.runId')
# 4. Проверка результатов
curl -s "$BASE/api-tester/test-runs/$RUN_ID" \
-H "X-API-Key: $TOKEN" | jq '.status, .summary'
CLI
# Запуск существующей коллекции по имени или ID
mockarty-cli run collection "CI Tests" --wait --format json
# Запуск с экспортом JUnit-отчёта для CI
mockarty-cli run collection "CI Tests" --wait --junit-report results.xml
Go
// Создание коллекции и выполнение
col, err := client.Collections().Create(context.Background(), &mockarty.Collection{
Name: "CI Tests",
Description: "Automated test suite",
})
// Выполнение коллекции
run, err := client.Collections().Execute(context.Background(), col.ID)
fmt.Printf("Run ID: %s, Status: %s\n", run.ID, run.Status)
Python
# Создание коллекции и выполнение
col = client.collections.create({
"name": "CI Tests",
"description": "Automated test suite",
})
# Выполнение коллекции
run = client.collections.execute(col.id)
print(f"Run ID: {run.id}, Status: {run.status}")
Java
// Создание коллекции и выполнение
Map<String, Object> col = client.collections().create(Map.of(
"name", "CI Tests",
"description", "Automated test suite"
));
String collectionId = (String) col.get("id");
Map<String, Object> run = client.collections().execute(collectionId, Map.of());
System.out.println("Run ID: " + run.get("runId"));
6.2 Запуск нагрузочных тестов из CI
cURL
# 1. Создание конфигурации нагрузочного теста (привязана к коллекции)
CONFIG_ID=$(curl -s -X POST "$BASE/perf-configs" \
-H "X-API-Key: $TOKEN" \
-d '{
"name": "Load Test",
"collectionId": "'$COLLECTION_ID'",
"vus": 10,
"duration": "30s"
}' | jq -r '.id')
# 2. Запуск нагрузочного теста с инлайн-скриптом
curl -X POST "$BASE/perf/run" \
-H "X-API-Key: $TOKEN" \
-d '{
"script": "import http from \"k6/http\"; export default function() { http.get(\"http://localhost:5770/stubs/sandbox/api/users\"); }",
"options": {"vus": 10, "duration": "30s"}
}'
# 3. Проверка результатов
curl -s "$BASE/perf-results" -H "X-API-Key: $TOKEN" | jq '.[0]'
CLI
# Запуск нагрузочного теста из существующей конфигурации
mockarty-cli perf run --config "Load Test" --wait
# Запуск с инлайн-параметрами
mockarty-cli perf run --vus 10 --duration 30s \
--url http://localhost:5770/stubs/sandbox/api/users
Go
// Запуск нагрузочного теста
result, err := client.Perf().Run(context.Background(), &mockarty.PerfRunRequest{
Script: `import http from "k6/http"; export default function() { http.get("http://localhost:5770/stubs/sandbox/api/users"); }`,
Options: map[string]any{"vus": 10, "duration": "30s"},
})
// Список результатов
results, err := client.Perf().ListResults(context.Background())
Python
# Запуск нагрузочного теста
result = client.perf.run({
"script": 'import http from "k6/http"; export default function() { http.get("http://localhost:5770/stubs/sandbox/api/users"); }',
"options": {"vus": 10, "duration": "30s"},
})
# Список результатов
results = client.perf.list_results()
Java
// Запуск нагрузочного теста
Map<String, Object> result = client.perf().run(Map.of(
"script", "import http from \"k6/http\"; export default function() { http.get(\"http://localhost:5770/stubs/sandbox/api/users\"); }",
"options", Map.of("vus", 10, "duration", "30s")
));
6.3 Запуск фаззинга из CI
cURL
# 1. Создание конфигурации фаззинга
CONFIG_ID=$(curl -s -X POST "$BASE/fuzzing/configs" \
-H "X-API-Key: $TOKEN" \
-d '{
"name": "API Fuzz",
"method": "POST",
"url": "http://target:8080/api/users",
"headers": {"Content-Type": "application/json"},
"body": "{\"name\": \"test\"}",
"payloadCategories": ["sql_injection", "xss"]
}' | jq -r '.id')
# 2. Запуск фаззинга
RUN_ID=$(curl -s -X POST "$BASE/fuzzing/run" \
-H "X-API-Key: $TOKEN" \
-d '{"configId": "'$CONFIG_ID'"}' | jq -r '.id')
# 3. Проверка найденных уязвимостей
curl -s "$BASE/fuzzing/findings?runId=$RUN_ID" \
-H "X-API-Key: $TOKEN" | jq '.findings'
CLI
# Запуск фаззинга из CLI
mockarty-cli fuzz run --config "API Fuzz" --wait
# Быстрый фаззинг URL
mockarty-cli fuzz quick \
--url http://target:8080/api/users \
--method POST \
--categories sql_injection,xss
Go
// Создание конфигурации и запуск фаззинга
config, err := client.Fuzzing().CreateConfig(context.Background(), &mockarty.FuzzingConfig{
Name: "API Fuzz",
Method: "POST",
URL: "http://target:8080/api/users",
PayloadCategories: []string{"sql_injection", "xss"},
})
run, err := client.Fuzzing().Run(context.Background(), config.ID)
// Проверка найденных уязвимостей
findings, err := client.Fuzzing().ListFindings(context.Background(), run.ID)
Python
# Создание конфигурации и запуск фаззинга
config = client.fuzzing.create_config({
"name": "API Fuzz",
"method": "POST",
"url": "http://target:8080/api/users",
"payloadCategories": ["sql_injection", "xss"],
})
run = client.fuzzing.run(config.id)
# Проверка найденных уязвимостей
findings = client.fuzzing.list_findings(run_id=run.id)
Java
// Создание конфигурации и запуск фаззинга
FuzzingConfig config = client.fuzzing().createConfig(Map.of(
"name", "API Fuzz",
"method", "POST",
"url", "http://target:8080/api/users",
"payloadCategories", List.of("sql_injection", "xss")
));
FuzzingRun run = client.fuzzing().run(config.getId());
6.4 Импорт OpenAPI/Postman/HAR
cURL
# Импорт OpenAPI-спецификации для генерации моков (пространство "sandbox" по умолчанию)
curl -X POST "$BASE/generators/openapi" \
-H "X-API-Key: $TOKEN" \
-F "file=@openapi.yaml" \
-F "namespace=sandbox"
# Импорт коллекции Postman в API Tester
curl -X POST "$BASE/api-tester/import/postman" \
-H "X-API-Key: $TOKEN" \
-F "file=@collection.json"
# Импорт HAR-записи
curl -X POST "$BASE/api-tester/import/har" \
-H "X-API-Key: $TOKEN" \
-F "file=@recording.har"
# Импорт WSDL для SOAP-моков
curl -X POST "$BASE/api-tester/import/wsdl" \
-H "X-API-Key: $TOKEN" \
-F "file=@service.wsdl"
CLI
# Импорт OpenAPI-спецификации (пространство по умолчанию "sandbox")
mockarty-cli generate openapi --file openapi.yaml --namespace sandbox
# Импорт коллекции Postman
mockarty-cli import postman --file collection.json
# Импорт HAR-записи
mockarty-cli import har --file recording.har
Go
// Импорт OpenAPI-спецификации для генерации моков
result, err := client.Generator().OpenAPIGenerate(context.Background(),
"openapi.yaml", // путь к файлу
"sandbox", // пространство имён
)
// Импорт коллекции Postman
importResult, err := client.Imports().Postman(context.Background(), "collection.json")
Python
# Импорт OpenAPI-спецификации для генерации моков
result = client.generator.openapi_generate(
file_path="openapi.yaml",
namespace="sandbox", # необязательно, "sandbox" по умолчанию
)
# Импорт коллекции Postman
import_result = client.imports.postman(file_path="collection.json")
Java
// Импорт OpenAPI-спецификации для генерации моков
GeneratorResponse result = client.generator().openapiGenerate(
"openapi.yaml", "sandbox"
);
// Импорт коллекции Postman
ImportResult importResult = client.imports().postman("collection.json");
6.5 Настройка моков перед тестами
cURL
# Создание моков для тестового окружения (пространство "sandbox" по умолчанию)
curl -X POST http://localhost:5770/api/v1/mocks \
-H "X-API-Key: $TOKEN" \
-d '{
"id": "ci-user-service",
"namespace": "sandbox",
"http": {"route": "/api/users/list", "httpMethod": "GET"},
"response": {
"statusCode": 200,
"payload": {"id": "$.fake.UUID", "name": "Test User"}
}
}'
# Проверка, что мок активен
curl http://localhost:5770/stubs/sandbox/api/users/list
# Возвращает: {"id": "a1b2c3d4-...", "name": "Test User"}
# Очистка после тестов
curl -X DELETE -H "X-API-Key: $TOKEN" \
http://localhost:5770/api/v1/mocks/ci-user-service
CLI
# Создание мока из JSON-файла
mockarty-cli mock create --file ci-mocks.json
# Проверка, что мок активен
curl http://localhost:5770/stubs/sandbox/api/users/list
# Очистка после тестов
mockarty-cli mock delete ci-user-service
Go
// Создание мока для CI
mock := mockarty.NewMockBuilder().
ID("ci-user-service").
Namespace("sandbox").
HTTP(func(h *mockarty.HTTPBuilder) {
h.Route("/api/users/list").Method("GET")
}).
Response(func(r *mockarty.ResponseBuilder) {
r.Status(200).JSONBody(map[string]any{
"id": "$.fake.UUID",
"name": "Test User",
})
}).
Build()
_, err := client.Mocks().Create(context.Background(), mock)
// ... запуск тестов ...
// Очистка
err = client.Mocks().Delete(context.Background(), "ci-user-service")
Python
# Создание мока для CI
mock = (
MockBuilder.http("/api/users/list", "GET")
.id("ci-user-service")
.namespace("sandbox")
.respond(200, body={"id": "$.fake.UUID", "name": "Test User"})
.build()
)
client.mocks.create(mock)
# ... запуск тестов ...
# Очистка
client.mocks.delete("ci-user-service")
Java
// Создание мока для CI
Mock mock = MockBuilder.http("/api/users/list", "GET")
.id("ci-user-service")
.namespace("sandbox")
.respond(200, Map.of("id", "$.fake.UUID", "name", "Test User"))
.build();
client.mocks().create(mock);
// ... запуск тестов ...
// Очистка
client.mocks().delete("ci-user-service");
7. API тестирования API
Полнофункциональная платформа тестирования API (аналог Postman). Все эндпоинты под /api/v1/ и требуют аутентификации.
Коллекции
| Метод |
Путь |
Описание |
| POST |
/api/v1/api-tester/collections |
Создание коллекции |
| GET |
/api/v1/api-tester/collections |
Список коллекций |
| GET |
/api/v1/api-tester/collections/:id |
Получение коллекции |
| PUT |
/api/v1/api-tester/collections/:id |
Обновление коллекции |
| DELETE |
/api/v1/api-tester/collections/:id |
Удаление коллекции |
| POST |
/api/v1/api-tester/collections/:id/restore |
Восстановление удалённой коллекции |
| POST |
/api/v1/api-tester/collections/:id/duplicate |
Дублирование коллекции |
| DELETE |
/api/v1/api-tester/collections/batch |
Пакетное удаление |
| GET |
/api/v1/api-tester/collections/:id/export |
Экспорт коллекции (JSON) |
Совместный доступ к коллекциям
| Метод |
Путь |
Описание |
| POST |
/api/v1/api-tester/collections/:id/share-with-users |
Поделиться с пользователями |
| POST |
/api/v1/api-tester/collections/:id/share-with-spaces |
Поделиться с пространствами имён |
| GET |
/api/v1/api-tester/collections/:id/users |
Список пользователей коллекции |
| PUT |
/api/v1/api-tester/collections/:id/users/:userId/role |
Установить роль пользователя |
| DELETE |
/api/v1/api-tester/collections/:id/users/:userId |
Удалить пользователя |
| GET |
/api/v1/api-tester/collections/:id/spaces |
Список общих пространств |
| DELETE |
/api/v1/api-tester/collections/:id/spaces/:namespace |
Удалить пространство |
Запросы
| Метод |
Путь |
Описание |
| POST |
/api/v1/api-tester/collections/:id/requests |
Создание запроса |
| GET |
/api/v1/api-tester/collections/:id/requests |
Список запросов в коллекции |
| GET |
/api/v1/api-tester/requests/:id |
Получение запроса |
| PUT |
/api/v1/api-tester/requests/:id |
Обновление запроса |
| DELETE |
/api/v1/api-tester/requests/:id |
Удаление запроса |
| POST |
/api/v1/api-tester/requests/execute |
Выполнение запроса (серверный режим) |
| POST |
/api/v1/api-tester/requests/execute-client |
Выполнение для клиентского режима |
| GET |
/api/v1/api-tester/requests/history |
История выполнения запросов |
| DELETE |
/api/v1/api-tester/requests/batch |
Пакетное удаление запросов |
| PATCH |
/api/v1/api-tester/requests/batch/move |
Пакетное перемещение запросов |
| POST |
/api/v1/api-tester/collections/:id/requests/reorder |
Изменить порядок запросов в коллекции (тело: {"ids":["uuid","uuid",...]}) |
Окружения
| Метод |
Путь |
Описание |
| POST |
/api/v1/api-tester/environments |
Создание окружения |
| GET |
/api/v1/api-tester/environments |
Список окружений |
| GET |
/api/v1/api-tester/environments/active |
Получение активного окружения |
| GET |
/api/v1/api-tester/environments/:id |
Получение окружения |
| PUT |
/api/v1/api-tester/environments/:id |
Обновление окружения |
| DELETE |
/api/v1/api-tester/environments/:id |
Удаление окружения |
| POST |
/api/v1/api-tester/environments/:id/activate |
Установить как активное |
Запуски тестов
| Метод |
Путь |
Описание |
| GET |
/api/v1/api-tester/test-runs |
Список запусков (поддерживает ?mode=&referenceId=&limit=&offset=) |
| GET |
/api/v1/api-tester/test-runs/:id |
Детали запуска |
| DELETE |
/api/v1/api-tester/test-runs/:id |
Удаление запуска |
| POST |
/api/v1/api-tester/test-runs/:id/cancel |
Отмена запущенного теста |
| GET |
/api/v1/api-tester/test-runs/:id/export |
Экспорт отчёта |
| POST |
/api/v1/api-tester/reports/import |
Импорт отчёта |
| GET |
/api/v1/test-runs/active |
Активные запуски всех режимов в namespace |
Режимы единой витрины запусков
Каждая строка из /api/v1/api-tester/test-runs содержит поле mode,
идентифицирующее источник запуска:
| Режим |
Откуда |
На что указывает referenceId |
functional |
API Tester (по умолчанию) |
— |
load |
Нагрузочный движок |
Perf-конфигурация |
fuzz |
Фаззинг-кампания |
Fuzz-конфигурация |
chaos |
Chaos-эксперимент |
Chaos-эксперимент |
contract |
Контрактная верификация |
Запись реестра контрактов |
Примеры фильтрации:
# Все fuzz-кампании в namespace
curl -H "Authorization: Bearer $TOKEN" \
"$MOCKARTY_URL/api/v1/api-tester/test-runs?mode=fuzz"
# Все запуски конкретного chaos-эксперимента
curl -H "Authorization: Bearer $TOKEN" \
"$MOCKARTY_URL/api/v1/api-tester/test-runs?mode=chaos&referenceId=$EXPERIMENT_ID"
# Пагинация по функциональным запускам
curl -H "Authorization: Bearer $TOKEN" \
"$MOCKARTY_URL/api/v1/api-tester/test-runs?mode=functional&limit=50&offset=100"
Эквиваленты в SDK:
// Go
runs, err := client.TestRuns.ListWithOptions(ctx, mockarty.ListTestRunsOptions{
Mode: "fuzz",
ReferenceID: fuzzConfigID,
Limit: 50,
})
# Python
runs = client.test_runs.list(mode="chaos", reference_id=experiment_id, limit=50)
// Java
List<TestRun> runs = client.testRuns().listByMode("fuzz", fuzzConfigId, 50, 0);
# CLI
mockarty-cli test-runs list --mode chaos --reference-id "$EXPERIMENT_ID" --limit 50
Скрипты и выполнение
| Метод |
Путь |
Описание |
| POST |
/api/v1/api-tester/requests/execute-with-scripts |
Выполнение с пре/пост-скриптами |
| POST |
/api/v1/api-tester/requests/run-script |
Запуск скрипта отдельно |
| POST |
/api/v1/api-tester/collections/:id/execute |
Выполнение всей коллекции |
| POST |
/api/v1/api-tester/collections/execute-multiple |
Выполнение нескольких коллекций |
| GET |
/api/v1/api-tester/test-reports/:id |
Получение отчёта |
Автономные тесты
| Метод |
Путь |
Описание |
| GET |
/api/v1/api-tester/tests |
Список тестов |
| POST |
/api/v1/api-tester/tests |
Создание теста |
| GET |
/api/v1/api-tester/tests/:id |
Получение теста |
| PUT |
/api/v1/api-tester/tests/:id |
Обновление теста |
| DELETE |
/api/v1/api-tester/tests/:id |
Удаление теста |
| POST |
/api/v1/api-tester/tests/:id/run |
Запуск теста |
| POST |
/api/v1/api-tester/tests/run |
Запуск теста инлайн |
Расписания (Cron)
| Метод |
Путь |
Описание |
| GET |
/api/v1/api-tester/schedules |
Список расписаний |
| POST |
/api/v1/api-tester/schedules |
Создание расписания |
| GET |
/api/v1/api-tester/schedules/:id |
Получение расписания |
| PUT |
/api/v1/api-tester/schedules/:id |
Обновление расписания |
| DELETE |
/api/v1/api-tester/schedules/:id |
Удаление расписания |
| POST |
/api/v1/api-tester/schedules/:id/run |
Запуск расписания сейчас |
Импорт/экспорт
| Метод |
Путь |
Описание |
| POST |
/api/v1/api-tester/import/postman |
Импорт коллекции Postman |
| POST |
/api/v1/api-tester/import/openapi |
Импорт из OpenAPI-спецификации |
| POST |
/api/v1/api-tester/import/wsdl |
Импорт из WSDL |
| POST |
/api/v1/api-tester/import/grpc |
Импорт gRPC из .proto |
| POST |
/api/v1/api-tester/import/graphql |
Импорт GraphQL-схемы |
| POST |
/api/v1/api-tester/import/mcp |
Импорт инструментов MCP-сервера |
| POST |
/api/v1/api-tester/import/har |
Импорт HAR-записи |
| POST |
/api/v1/api-tester/import/soapui |
Импорт проекта SoapUI |
| POST |
/api/v1/api-tester/import/mockarty |
Импорт коллекции Mockarty |
| POST |
/api/v1/api-tester/generate-mock |
Генерация мока из ответа |
| POST |
/api/v1/api-tester/generate-mocks-from-collection |
Генерация моков из коллекции |
Вспомогательные эндпоинты протоколов
| Метод |
Путь |
Описание |
| POST |
/api/v1/proxy/http |
Проксирование HTTP-запроса |
| POST |
/api/v1/proxy/soap |
Проксирование SOAP-запроса |
| POST |
/api/v1/proxy/grpc |
Проксирование gRPC-запроса |
| POST |
/api/v1/api-tester/mcp/connect |
Подключение к MCP-серверу |
| POST |
/api/v1/api-tester/mcp/tools/list |
Список инструментов MCP |
| POST |
/api/v1/api-tester/mcp/tools/call |
Вызов инструмента MCP |
| POST |
/api/v1/api-tester/graphql/introspect |
Интроспекция GraphQL |
| POST |
/api/v1/api-tester/grpc/discover |
Обнаружение gRPC-сервисов |
| POST |
/api/v1/api-tester/soap/operations |
Список SOAP-операций из WSDL |
Kafka Admin
| Метод |
Путь |
Описание |
| POST |
/api/v1/api-tester/kafka/metadata |
Метаданные кластера |
| POST |
/api/v1/api-tester/kafka/topics |
Список топиков |
| POST |
/api/v1/api-tester/kafka/topics/create |
Создание топика |
| POST |
/api/v1/api-tester/kafka/topics/delete |
Удаление топика |
| POST |
/api/v1/api-tester/kafka/consumer-groups |
Список групп потребителей |
RabbitMQ Admin
| Метод |
Путь |
Описание |
| POST |
/api/v1/api-tester/rabbitmq/publish |
Публикация сообщения |
| POST |
/api/v1/api-tester/rabbitmq/read |
Чтение сообщений из очереди |
| POST |
/api/v1/api-tester/rabbitmq/metadata |
Метаданные брокера |
| POST |
/api/v1/api-tester/rabbitmq/queues |
Список очередей |
| POST |
/api/v1/api-tester/rabbitmq/queues/create |
Создание очереди |
| POST |
/api/v1/api-tester/rabbitmq/queues/delete |
Удаление очереди |
| POST |
/api/v1/api-tester/rabbitmq/queues/purge |
Очистка очереди |
| POST |
/api/v1/api-tester/rabbitmq/exchanges |
Список обменников |
| POST |
/api/v1/api-tester/rabbitmq/exchanges/create |
Создание обменника |
| POST |
/api/v1/api-tester/rabbitmq/exchanges/delete |
Удаление обменника |
8. API нагрузочного тестирования
Встроенное нагрузочное тестирование с k6-совместимыми скриптами. Все эндпоинты под /api/v1/.
Конфигурации нагрузочных тестов
| Метод |
Путь |
Описание |
| GET |
/api/v1/perf-configs |
Список конфигураций |
| GET |
/api/v1/perf-configs/:id |
Получение конфигурации |
| POST |
/api/v1/perf-configs |
Создание конфигурации |
| PUT |
/api/v1/perf-configs/:id |
Обновление конфигурации |
| DELETE |
/api/v1/perf-configs/:id |
Удаление конфигурации |
Запуск/остановка тестов
| Метод |
Путь |
Описание |
| POST |
/api/v1/perf/run |
Запуск теста со скриптом |
| POST |
/api/v1/perf/run-collection |
Запуск теста из коллекции |
| POST |
/api/v1/perf/stop/:taskId |
Остановка запущенного теста |
| POST |
/api/v1/perf/scripts |
Генерация k6-скрипта из конфигурации |
| POST |
/api/v1/perf/scripts/from-request |
Генерация скрипта из запроса API Tester |
| POST |
/api/v1/perf/scripts/from-har |
Конвертация HAR в скрипт |
| GET |
/api/v1/perf/snippets |
Список сниппетов скриптов |
Результаты
| Метод |
Путь |
Описание |
| GET |
/api/v1/perf-results |
Список всех результатов |
| GET |
/api/v1/perf-results/:id |
Детали результата |
| DELETE |
/api/v1/perf-results/:id |
Удаление результата |
| GET |
/api/v1/perf-results/compare |
Сравнение результатов |
| GET |
/api/v1/perf-results/history/:configId |
История результатов конфигурации |
| GET |
/api/v1/perf-results/trend/:configId |
Данные тренда |
| GET |
/api/v1/perf-results/group/:runGroupId |
Результаты по группе запуска |
| POST |
/api/v1/perf-results/:id/ai-analyze |
AI-анализ результатов |
Расписания
| Метод |
Путь |
Описание |
| GET |
/api/v1/perf-schedules |
Список расписаний |
| POST |
/api/v1/perf-schedules |
Создание расписания |
| PUT |
/api/v1/perf-schedules/:id |
Обновление расписания |
| DELETE |
/api/v1/perf-schedules/:id |
Удаление расписания |
Задачи раннеров
| Метод |
Путь |
Описание |
| POST |
/api/v1/runner-tasks |
Отправка задачи раннеру |
| GET |
/api/v1/runner-tasks |
Список задач |
| GET |
/api/v1/runner-tasks/:id |
Статус задачи |
| GET |
/api/v1/runner-tasks/:id/queue-position |
Позиция в очереди |
| DELETE |
/api/v1/runner-tasks/:id |
Отмена задачи |
| GET |
/api/v1/runners |
Список доступных раннеров |
9. API фаззинга
Фаззинг безопасности со встроенными категориями полезных нагрузок (SQL-инъекции, XSS и др.). Все эндпоинты под /api/v1/fuzzing/.
Сводка и полезные нагрузки
| Метод |
Путь |
Описание |
| GET |
/api/v1/fuzzing/summary |
Сводка по дашборду фаззинга |
| GET |
/api/v1/fuzzing/payload-categories |
Список категорий полезных нагрузок |
Конфигурации
| Метод |
Путь |
Описание |
| GET |
/api/v1/fuzzing/configs |
Список конфигураций |
| GET |
/api/v1/fuzzing/configs/:id |
Получение конфигурации |
| POST |
/api/v1/fuzzing/configs |
Создание конфигурации |
| PUT |
/api/v1/fuzzing/configs/:id |
Обновление конфигурации |
| DELETE |
/api/v1/fuzzing/configs/:id |
Удаление конфигурации |
| POST |
/api/v1/fuzzing/configs/reorder |
Изменение порядка конфигураций |
Импорт
| Метод |
Путь |
Описание |
| POST |
/api/v1/fuzzing/import/curl |
Импорт из команды cURL |
| POST |
/api/v1/fuzzing/import/openapi |
Импорт из OpenAPI-спецификации |
| POST |
/api/v1/fuzzing/import/collection |
Импорт из коллекции API Tester |
| POST |
/api/v1/fuzzing/import/recorder |
Импорт из сессии рекордера |
| POST |
/api/v1/fuzzing/import/mock |
Импорт из определения мока |
Обнаружение протоколов
| Метод |
Путь |
Описание |
| POST |
/api/v1/fuzzing/introspect/graphql |
Интроспекция GraphQL для фаззинга |
| POST |
/api/v1/fuzzing/discover/grpc |
Обнаружение gRPC-сервисов для фаззинга |
Запуски и результаты
| Метод |
Путь |
Описание |
| POST |
/api/v1/fuzzing/run |
Запуск фаззинга |
| POST |
/api/v1/fuzzing/run/:id/stop |
Остановка фаззинга |
| POST |
/api/v1/fuzzing/quick-fuzz |
Быстрый фаззинг (создание + запуск) |
| GET |
/api/v1/fuzzing/results |
Список результатов |
| GET |
/api/v1/fuzzing/results/:id |
Детали результата |
| DELETE |
/api/v1/fuzzing/results/:id |
Удаление результата |
аномалии
| Метод |
Путь |
Описание |
| GET |
/api/v1/fuzzing/findings |
Список находок |
| GET |
/api/v1/fuzzing/findings/:id |
Детали аномалии |
| PUT |
/api/v1/fuzzing/findings/:id/triage |
Триаж аномалии (установка критичности, статуса) |
| POST |
/api/v1/fuzzing/findings/:id/replay |
Повтор запроса аномалии |
| POST |
/api/v1/fuzzing/findings/:id/analyze |
AI-анализ аномалии |
| POST |
/api/v1/fuzzing/findings/batch-analyze |
AI-анализ нескольких находок |
| POST |
/api/v1/fuzzing/findings/batch-triage |
AI пакетный триаж |
| POST |
/api/v1/fuzzing/findings/export |
Экспорт находок |
Расписания
| Метод |
Путь |
Описание |
| GET |
/api/v1/fuzzing/schedules |
Список расписаний |
| GET |
/api/v1/fuzzing/schedules/:id |
Получение расписания |
| POST |
/api/v1/fuzzing/schedules |
Создание расписания |
| PUT |
/api/v1/fuzzing/schedules/:id |
Обновление расписания |
| DELETE |
/api/v1/fuzzing/schedules/:id |
Удаление расписания |
10. API рекордера
Запись HTTP-трафика (на основе прокси). Все эндпоинты под /api/v1/recorder/.
Сессии
| Метод |
Путь |
Описание |
| POST |
/api/v1/recorder/start |
Начало сессии записи |
| GET |
/api/v1/recorder/sessions |
Список сессий |
| GET |
/api/v1/recorder/:id |
Детали сессии |
| POST |
/api/v1/recorder/:id/stop |
Остановка сессии |
| POST |
/api/v1/recorder/:id/restart |
Перезапуск сессии |
| DELETE |
/api/v1/recorder/:id |
Удаление сессии |
Пример начала сессии:
cURL
curl -X POST "$BASE/recorder/start" \
-H "X-API-Key: $TOKEN" \
-d '{
"targetUrl": "https://api.example.com",
"port": 8888,
"name": "API Recording"
}'
Go
session, err := client.Recorder().StartRecording(context.Background(), &mockarty.RecorderSession{
TargetURL: "https://api.example.com",
Port: 8888,
Name: "API Recording",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Сессия запущена: %s\n", session.ID)
Python
session = client.recorder.create({
"targetUrl": "https://api.example.com",
"port": 8888,
"name": "API Recording",
})
print(f"Сессия запущена: {session.id}")
Java
RecorderSession session = client.recorder().start(Map.of(
"targetUrl", "https://api.example.com",
"port", 8888,
"name", "API Recording"
));
System.out.println("Сессия запущена: " + session.getId());
Совет: Те же операции доступны через mockarty-cli recorder ... — справочник команд см. в Руководстве CLI.
Записи
| Метод |
Путь |
Описание |
| GET |
/api/v1/recorder/:id/entries |
Список записанных запросов |
| PATCH |
/api/v1/recorder/:id/entries/:entryId |
Аннотация записи |
| POST |
/api/v1/recorder/:id/entries/:entryId/replay |
Повтор запроса |
Модификации (перезапись запросов/ответов)
| Метод |
Путь |
Описание |
| GET |
/api/v1/recorder/:id/modifications |
Получение правил модификации |
| PUT |
/api/v1/recorder/:id/modifications |
Обновление правил |
Экспорт
| Метод |
Путь |
Описание |
| POST |
/api/v1/recorder/:id/export |
Экспорт в HAR |
| POST |
/api/v1/recorder/:id/export-perf |
Экспорт как скрипт нагрузки |
| POST |
/api/v1/recorder/:id/export-test |
Экспорт как тестовый скрипт |
| POST |
/api/v1/recorder/:id/export-collection |
Экспорт как коллекция API Tester |
| POST |
/api/v1/recorder/:id/mocks |
Создание моков из записей |
AI-анализ
| Метод |
Путь |
Описание |
| POST |
/api/v1/recorder/:id/ai-analyze |
AI-анализ трафика сессии |
| POST |
/api/v1/recorder/:id/ai-scenarios |
AI-генерация тестовых сценариев |
Конфигурация
| Метод |
Путь |
Описание |
| GET |
/api/v1/recorder/ports |
Список используемых портов |
| GET |
/api/v1/recorder/port-check |
Проверка доступности порта |
| GET |
/api/v1/recorder/configs |
Список конфигураций рекордера |
| POST |
/api/v1/recorder/configs |
Сохранение конфигурации |
| POST |
/api/v1/recorder/configs/import |
Импорт конфигурации |
| GET |
/api/v1/recorder/configs/:id/export |
Экспорт конфигурации |
| DELETE |
/api/v1/recorder/configs/:id |
Удаление конфигурации |
| GET |
/api/v1/recorder/ca/status |
Статус CA-сертификата |
| POST |
/api/v1/recorder/ca/generate |
Генерация CA-сертификата |
| GET |
/api/v1/recorder/ca/download |
Скачивание CA-сертификата |
WebSocket
| Метод |
Путь |
Описание |
| GET |
/api/v1/recorder/:id/ws |
WebSocket для потоковой передачи записей |
11. API контрактного тестирования
Контрактное тестирование проверяет, что ваши моки остаются согласованными со спецификациями реальных API. Поддерживаются: валидация по OpenAPI, потребительские контракты (совместимость с Pact), обнаружение дрейфа API (API drift) и реестр API (внутренний маркетплейс). Все эндпоинты находятся под префиксом /api/v1/contract/.
Валидация моков
| Метод |
Путь |
Описание |
| POST |
/api/v1/contract/validate-mocks |
Проверить моки на соответствие OpenAPI-спецификации |
| POST |
/api/v1/contract/verify-provider |
Проверить провайдера по потребительским контрактам |
| POST |
/api/v1/contract/check-compatibility |
Проверить обратную совместимость между версиями API |
| POST |
/api/v1/contract/validate-payload |
Проверить отдельное тело мока по схеме |
| POST |
/api/v1/contract/detect-drift |
Обнаружить дрейф API между моками и живыми эндпоинтами |
Конфигурации и регулярные запуски
| Метод |
Путь |
Описание |
| GET |
/api/v1/contract/configs |
Список конфигураций контрактного тестирования |
| POST |
/api/v1/contract/configs |
Создать/сохранить конфигурацию |
| DELETE |
/api/v1/contract/configs/:id |
Удалить конфигурацию |
| POST |
/api/v1/contract/configs/:id/run |
Запустить конфигурацию немедленно |
Результаты и тренды
| Метод |
Путь |
Описание |
| GET |
/api/v1/contract/results |
Список результатов контрактного тестирования |
| GET |
/api/v1/contract/results/:id |
Получить конкретный результат |
| GET |
/api/v1/contract/trends |
Получить данные тренда контрактного тестирования во времени |
аномалии (AI-анализ)
| Метод |
Путь |
Описание |
| POST |
/api/v1/contract/findings/analyze |
AI-анализ находок контрактного тестирования |
| POST |
/api/v1/contract/findings/auto-triage |
Автоматическая сортировка находок с помощью AI |
| POST |
/api/v1/contract/findings/export |
Экспорт находок |
Потребительские контракты (Pact)
| Метод |
Путь |
Описание |
| POST |
/api/v1/contract/pacts |
Опубликовать потребительский контракт (Pact) |
| GET |
/api/v1/contract/pacts |
Список опубликованных контрактов |
| GET |
/api/v1/contract/pacts/:id |
Получить конкретный Pact |
| DELETE |
/api/v1/contract/pacts/:id |
Удалить Pact |
| POST |
/api/v1/contract/pacts/verify |
Проверить провайдера по Pact-контрактам |
| POST |
/api/v1/contract/pacts/can-i-deploy |
Проверить, безопасно ли деплоить версию (can-i-deploy) |
| GET |
/api/v1/contract/pacts/verifications |
Список результатов верификации Pact |
| POST |
/api/v1/contract/pacts/:id/mocks |
Сгенерировать моки из Pact-контракта |
Реестр API (внутренний маркетплейс)
| Метод |
Путь |
Описание |
| POST |
/api/v1/contract/registry |
Опубликовать API в реестре |
| GET |
/api/v1/contract/registry |
Список зарегистрированных API |
| GET |
/api/v1/contract/registry/namespaces |
Список пространств имён реестра |
| GET |
/api/v1/contract/registry/:id |
Получить зарегистрированный API |
| PUT |
/api/v1/contract/registry/:id |
Обновить зарегистрированный API |
| DELETE |
/api/v1/contract/registry/:id |
Удалить зарегистрированный API |
| POST |
/api/v1/contract/registry/:id/generate-mocks |
Сгенерировать моки из записи реестра |
| POST |
/api/v1/contract/registry/:id/subscribe |
Подписаться на изменения API |
| GET |
/api/v1/contract/registry/:id/subscribers |
Список подписчиков API |
| POST |
/api/v1/contract/registry/:id/check-impact |
Оценить влияние изменений API на подписчиков |
Подписки
| Метод |
Путь |
Описание |
| GET |
/api/v1/contract/subscriptions |
Список ваших подписок |
| DELETE |
/api/v1/contract/subscriptions/:id |
Отписаться от API |
12. API Chaos Engineering
Kubernetes-нативный chaos engineering для инъекции отказов и проверки отказоустойчивости. Создавайте эксперименты для внесения отказов (убийство подов, сетевые задержки, нагрузка на ресурсы) в ваши кластеры и наблюдайте за поведением сервисов. Все эндпоинты находятся под префиксом /api/v1/chaos/.
Пресеты
| Метод |
Путь |
Описание |
| GET |
/api/v1/chaos/presets |
Список доступных пресетов chaos-экспериментов |
Эксперименты
| Метод |
Путь |
Описание |
| GET |
/api/v1/chaos/experiments |
Список экспериментов (фильтры: ?namespace=, ?status=, ?limit=, ?offset=) |
| GET |
/api/v1/chaos/experiments/:id |
Получить детали эксперимента |
| POST |
/api/v1/chaos/experiments |
Создать новый chaos-эксперимент |
| PUT |
/api/v1/chaos/experiments/:id |
Обновить эксперимент |
| DELETE |
/api/v1/chaos/experiments/:id |
Удалить эксперимент |
| POST |
/api/v1/chaos/experiments/:id/run |
Запустить эксперимент |
| POST |
/api/v1/chaos/experiments/:id/abort |
Прервать выполняющийся эксперимент |
| GET |
/api/v1/chaos/experiments/:id/metrics |
Получить метрики эксперимента |
| GET |
/api/v1/chaos/experiments/:id/events |
Получить таймлайн событий эксперимента |
| GET |
/api/v1/chaos/experiments/:id/report |
Получить отчёт эксперимента |
| GET |
/api/v1/chaos/experiments/:id/report/download |
Скачать отчёт эксперимента (?format=html|json|junit|allure) |
| GET |
/api/v1/chaos/experiments/:id/snapshot |
Снимок состояния кластера на момент эксперимента |
Очередь экспериментов
| Метод |
Путь |
Описание |
| GET |
/api/v1/chaos/queue/:clusterId |
Получить статус очереди для кластера |
Инфраструктурные профили
| Метод |
Путь |
Описание |
| GET |
/api/v1/chaos/profiles |
Список инфраструктурных профилей (фильтр: ?namespace=) |
| POST |
/api/v1/chaos/profiles |
Создать инфраструктурный профиль (с kubeconfig) |
| PUT |
/api/v1/chaos/profiles/:id |
Обновить профиль |
| DELETE |
/api/v1/chaos/profiles/:id |
Удалить профиль |
| POST |
/api/v1/chaos/profiles/:id/test |
Проверить подключение к кластеру |
| POST |
/api/v1/chaos/profiles/:id/connect |
Подключиться к кластеру |
| POST |
/api/v1/chaos/profiles-test |
Проверить kubeconfig без сохранения профиля |
Chaos Operator
| Метод |
Путь |
Описание |
| GET |
/api/v1/chaos/operator/status |
Получить статус Chaos Operator в кластере |
| POST |
/api/v1/chaos/operator/manifest |
Сгенерировать манифест установки оператора |
| POST |
/api/v1/chaos/operator/install |
Установить Chaos Operator в кластер |
Ресурсы Kubernetes
| Метод |
Путь |
Описание |
| GET |
/api/v1/chaos/clusters/:id/topology |
Получить топологию кластера |
| GET |
/api/v1/chaos/pods/:namespace/:name |
Получить детали пода |
| GET |
/api/v1/chaos/pods/:namespace/:name/logs |
Получить логи пода |
| DELETE |
/api/v1/chaos/pods/:namespace/:name |
Убить под |
| GET |
/api/v1/chaos/deployments/:namespace/:name |
Получить детали деплоймента |
| POST |
/api/v1/chaos/deployments/:namespace/:name/scale |
Масштабировать деплоймент |
| POST |
/api/v1/chaos/deployments/:namespace/:name/restart |
Перезапустить деплоймент |
| GET |
/api/v1/chaos/configmaps/:namespace |
Список ConfigMap |
| GET |
/api/v1/chaos/configmaps/:namespace/:name |
Получить ConfigMap |
| PUT |
/api/v1/chaos/configmaps/:namespace/:name |
Обновить ConfigMap |
| GET |
/api/v1/chaos/services/:namespace |
Список сервисов |
| GET |
/api/v1/chaos/crds |
Список Custom Resource Definitions |
| GET |
/api/v1/chaos/crds/:group/:version/:resource |
Список ресурсов CRD |
| GET |
/api/v1/chaos/events/:namespace |
Список событий Kubernetes |
13. API администрирования
Эндпоинты только для администраторов (роль admin). Префикс: /api/v1/admin/.
Управление пользователями
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/users |
Список пользователей |
| POST |
/api/v1/admin/users |
Создание пользователя |
| PUT |
/api/v1/admin/users/:id |
Обновление пользователя |
| DELETE |
/api/v1/admin/users/:id |
Удаление пользователя |
| POST |
/api/v1/admin/users/:id/password |
Установка пароля |
| POST |
/api/v1/admin/users/:id/disable |
Деактивация пользователя |
| POST |
/api/v1/admin/users/:id/enable |
Активация пользователя |
Управление пространствами имён (Админ)
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/namespaces |
Список пространств с метаданными |
| DELETE |
/api/v1/admin/namespaces/:namespace |
Удаление пространства |
| PUT |
/api/v1/admin/namespaces/:namespace/restore |
Восстановление пространства |
| GET |
/api/v1/admin/namespaces/:namespace/users |
Список пользователей пространства |
| POST |
/api/v1/admin/namespaces/:namespace/users |
Добавление пользователя |
| DELETE |
/api/v1/admin/namespaces/:namespace/users/:user_id |
Удаление пользователя |
| PUT |
/api/v1/admin/namespaces/:namespace/users/:user_id/role |
Обновление роли |
Политики очистки
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/namespaces/:namespace/cleanup-policy |
Получение политики очистки |
| PUT |
/api/v1/admin/namespaces/:namespace/cleanup-policy |
Установка политики |
| GET |
/api/v1/admin/cleanup-settings/:type |
Глобальные настройки очистки |
| PUT |
/api/v1/admin/cleanup-settings/:type |
Обновление глобальных настроек |
Настройки LLM/AI
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/llm-settings |
Получение глобальных настроек LLM |
| PUT |
/api/v1/admin/llm-settings |
Сохранение настроек LLM |
| GET |
/api/v1/admin/llm-profiles |
Список профилей LLM |
| GET |
/api/v1/admin/llm-profiles/:id |
Получение профиля LLM |
| POST |
/api/v1/admin/llm-profiles |
Создание профиля LLM |
| PUT |
/api/v1/admin/llm-profiles/:id |
Обновление профиля |
| DELETE |
/api/v1/admin/llm-profiles/:id |
Удаление профиля |
| GET |
/api/v1/admin/agent-settings |
Получение настроек AI-агента |
| PUT |
/api/v1/admin/agent-settings |
Обновление настроек AI-агента |
Настройки электронной почты
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/email/config |
Получение конфигурации SMTP |
| PUT |
/api/v1/admin/email/config |
Обновление конфигурации |
| POST |
/api/v1/admin/email/test |
Отправка тестового письма |
| POST |
/api/v1/admin/email/ping |
Проверка SMTP-сервера |
| POST |
/api/v1/admin/email/broadcast |
Рассылка пользователям |
| GET |
/api/v1/admin/email/events |
Список почтовых событий |
| GET |
/api/v1/admin/email/templates |
Список шаблонов писем |
| PUT |
/api/v1/admin/email/templates |
Создание/обновление шаблона |
| DELETE |
/api/v1/admin/email/templates/:slug |
Удаление шаблона |
| POST |
/api/v1/admin/email/templates/preview |
Предварительный просмотр |
Управление лицензиями
| Метод |
Путь |
Описание |
| POST |
/api/v1/admin/licenses/activate |
Активация лицензионного ключа |
| POST |
/api/v1/admin/licenses/import |
Импорт файла лицензии |
| GET |
/api/v1/admin/licenses |
Список лицензий |
| GET |
/api/v1/admin/licenses/:id |
Детали лицензии |
| POST |
/api/v1/admin/licenses/:id/revoke |
Отзыв лицензии |
| GET |
/api/v1/admin/licenses/status |
Сводка по лицензиям |
| GET |
/api/v1/admin/licenses/usage |
Статистика использования |
| GET |
/api/v1/admin/licenses/combined-limits |
Совмещённые лимиты |
Провайдеры идентификации
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/auth/providers |
Список провайдеров |
| POST |
/api/v1/admin/auth/providers |
Создание провайдера (OAuth, LDAP, SAML) |
| PUT |
/api/v1/admin/auth/providers/:id |
Обновление провайдера |
| DELETE |
/api/v1/admin/auth/providers/:id |
Удаление провайдера |
| POST |
/api/v1/admin/auth/ldap/test-connection |
Проверка подключения LDAP |
Управление резервными копиями
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/backups/configs |
Список конфигураций бэкапов |
| POST |
/api/v1/admin/backups/configs |
Создание конфигурации |
| PUT |
/api/v1/admin/backups/configs/:id |
Обновление конфигурации |
| DELETE |
/api/v1/admin/backups/configs/:id |
Удаление конфигурации |
| GET |
/api/v1/admin/backups/configs/:id/backups |
Список бэкапов конфигурации |
| POST |
/api/v1/admin/backups/create |
Создать бэкап сейчас |
| GET |
/api/v1/admin/backups/download |
Скачать файл бэкапа |
| POST |
/api/v1/admin/backups/restore |
Восстановление из бэкапа |
| DELETE |
/api/v1/admin/backups/delete |
Удаление бэкапа |
Мониторинг базы данных
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/database/health |
Проверка здоровья БД |
| GET |
/api/v1/admin/database/health-dashboard |
Полный дашборд здоровья |
| GET |
/api/v1/admin/database/indexes |
Список индексов |
| GET |
/api/v1/admin/database/indexes/unused |
Поиск неиспользуемых индексов |
| DELETE |
/api/v1/admin/database/indexes/unused |
Удаление неиспользуемых индексов |
| GET |
/api/v1/admin/database/tables |
Список таблиц со статистикой |
| GET |
/api/v1/admin/database/maintenance |
Рекомендации по обслуживанию |
| POST |
/api/v1/admin/database/maintenance |
Автоматическое обслуживание |
Вебхуки
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/webhooks |
Список вебхуков администратора |
| POST |
/api/v1/admin/webhooks |
Создание вебхука |
| DELETE |
/api/v1/admin/webhooks/:id |
Удаление вебхука |
Аудит и задачи
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/audit/export |
Экспорт журнала аудита (csv, json, syslog, cef) |
| GET |
/api/v1/admin/jobs/executions |
Список выполнений задач |
| GET |
/api/v1/admin/jobs/statistics |
Статистика задач |
| POST |
/api/v1/admin/jobs/trigger |
Ручной запуск задачи |
| GET |
/api/v1/admin/ai-audit |
Журнал использования AI |
| GET |
/api/v1/admin/ai-audit/export |
Экспорт журнала AI (CSV) |
Телеметрия
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/telemetry-settings |
Получение настроек телеметрии |
| PUT |
/api/v1/admin/telemetry-settings |
Обновление настроек |
MCP Marketplace (Админ)
| Метод |
Путь |
Описание |
| GET |
/api/v1/admin/mcp-servers |
Список MCP-серверов |
| POST |
/api/v1/admin/mcp-servers |
Добавление MCP-сервера |
| GET |
/api/v1/admin/mcp-servers/:id |
Получение MCP-сервера |
| PUT |
/api/v1/admin/mcp-servers/:id |
Обновление MCP-сервера |
| DELETE |
/api/v1/admin/mcp-servers/:id |
Удаление MCP-сервера |
| GET |
/api/v1/admin/mcp-servers/:id/tools |
Список инструментов сервера |
| PUT |
/api/v1/admin/mcp-servers/:id/tools/:toolName |
Переключение инструмента |
| POST |
/api/v1/admin/mcp-servers/:id/check |
Проверка подключения |
| POST |
/api/v1/admin/mcp-servers/:id/refresh |
Обновление инструментов |
Интеграционные токены
| Метод |
Путь |
Описание |
| GET |
/api/v1/integrations |
Список интеграционных токенов |
| POST |
/api/v1/integrations |
Создание интеграционного токена (админ) |
| DELETE |
/api/v1/integrations/:id |
Удаление интеграции |
| POST |
/api/v1/integrations/:id/revoke |
Отзыв токена |
| POST |
/api/v1/integrations/:id/rotate |
Ротация токена |
| GET |
/api/v1/integrations/status |
Статус раннеров |
| POST |
/api/v1/integrations/namespace/:ns |
Создание интеграции пространства |
| POST |
/api/v1/runners/register |
Регистрация раннер-агента |
14. Утилиты
Конвертеры (без аутентификации)
| Метод |
Путь |
Описание |
| POST |
/api/v1/utils/convert-xml-to-json |
Конвертация XML в JSON |
| POST |
/api/v1/utils/convert-txt-to-base64 |
Кодирование текста в Base64 |
| POST |
/api/v1/utils/extract-jpath |
Извлечение значений через JsonPath |
Генерация моков из спецификаций
| Метод |
Путь |
Описание |
| POST |
/api/v1/generators/openapi/preview |
Предпросмотр моков из OpenAPI |
| POST |
/api/v1/generators/openapi |
Генерация моков из OpenAPI |
| POST |
/api/v1/generators/soap/preview |
Предпросмотр моков из WSDL |
| POST |
/api/v1/generators/soap |
Генерация моков из WSDL |
| POST |
/api/v1/generators/grpc/preview |
Предпросмотр моков из .proto |
| POST |
/api/v1/generators/grpc |
Генерация моков из .proto |
| POST |
/api/v1/generators/graphql/preview |
Предпросмотр моков из GraphQL |
| POST |
/api/v1/generators/graphql |
Генерация моков из GraphQL |
| POST |
/api/v1/generators/har/preview |
Предпросмотр моков из HAR |
| POST |
/api/v1/generators/har |
Генерация моков из HAR |
| POST |
/api/v1/generators/mcp/preview |
Предпросмотр моков из MCP |
| POST |
/api/v1/generators/mcp |
Генерация моков из MCP |
| POST |
/api/v1/generators/socket |
Генерация Socket-моков |
AI-функции
| Метод |
Путь |
Описание |
| POST |
/api/v1/ai/generate-test-script |
Генерация тестового скрипта (AI) |
| POST |
/api/v1/ai/generate-perf-script |
Генерация скрипта нагрузки (AI) |
| POST |
/api/v1/ai/diagnose-error |
Диагностика ошибки (AI) |
| POST |
/api/v1/ai/generate-mock |
Генерация мока по описанию (AI) |
| POST |
/api/v1/ai/improve-mock |
Улучшение существующего мока (AI) |
| POST |
/api/v1/ai/analyze-test-results |
Анализ результатов тестов (AI) |
| POST |
/api/v1/ai/analyze-test-run-report |
Анализ отчёта запуска (AI) |
| POST |
/api/v1/ai/analyze-api-diff |
Анализ изменений API (AI) |
| POST |
/api/v1/ai/analyze-logs |
Анализ журналов моков (AI) |
| POST |
/api/v1/ai/generate-collection |
Генерация коллекции по описанию (AI) |
Уведомления
| Метод |
Путь |
Описание |
| GET |
/api/v1/notifications |
Список уведомлений |
| GET |
/api/v1/notifications/unread-count |
Количество непрочитанных |
| POST |
/api/v1/notifications/:id/read |
Отметить как прочитанное |
| POST |
/api/v1/notifications/read-all |
Отметить все прочитанными |
| DELETE |
/api/v1/notifications/:id |
Удаление уведомления |
| GET |
/api/v1/notifications/preferences |
Получение настроек |
| PUT |
/api/v1/notifications/preferences |
Обновление настроек |
Задачи агента
| Метод |
Путь |
Описание |
| GET |
/api/v1/agent/tasks |
Список задач агента |
| POST |
/api/v1/agent/tasks |
Отправка задачи |
| DELETE |
/api/v1/agent/tasks |
Очистить все задачи агента |
| GET |
/api/v1/agent/tasks/:id |
Детали задачи |
| DELETE |
/api/v1/agent/tasks/:id |
Удаление конкретной задачи |
| POST |
/api/v1/agent/tasks/:id/cancel |
Отмена выполняемой задачи |
| POST |
/api/v1/agent/tasks/:id/rerun |
Перезапуск завершённой задачи |
| GET |
/api/v1/agent/tasks/:id/export |
Экспорт результата задачи |
| GET |
/api/v1/agent/tasks/:id/events |
SSE-поток событий задачи |
Здоровье и мониторинг
| Метод |
Путь |
Описание |
| GET |
/health |
Полная проверка здоровья (БД, кэш) |
| GET |
/health/live |
Проверка жизнеспособности (возвращает 200) |
| GET |
/health/ready |
Проверка готовности |
| GET |
/metrics |
Метрики Prometheus |
| GET |
/swagger/ |
Swagger UI |
| GET |
/swagger/doc.json |
Спецификация Swagger (JSON) |
| GET |
/api/v1/stats |
Статистика дашборда |
| GET |
/api/v1/counts |
Количества ресурсов |
| GET |
/api/v1/status |
Статус системы |
| GET |
/api/v1/system-metrics |
Системные метрики |
| GET |
/api/v1/features |
Флаги функциональности |
| GET |
/api/v1/features/check |
Проверка конкретных функций |
Пример ответа health:
{
"status": "up",
"releaseId": "1.2.3",
"checks": {
"database": {"status": "up"},
"cache": {"status": "up"}
}
}
Дашборды
| Метод |
Путь |
Описание |
| GET |
/api/v1/dashboards/mock-stats |
Статистика использования моков |
| GET |
/api/v1/dashboards/comprehensive-stats |
Полные данные дашборда |
| GET |
/api/v1/dashboards/testing-stats |
Данные дашборда тестирования |
MCP-сервер
Mockarty предоставляет MCP (Model Context Protocol) сервер по адресу GET /mcp/sse. Подключайте AI-инструменты (Claude Desktop, Cursor) для управления моками через естественный язык.
SSE-события
| Метод |
Путь |
Описание |
| GET |
/api/v1/events |
SSE-поток обновлений в реальном времени |
15. Прокси-эндпоинты протоколов
Внутренние эндпоинты, используемые сгенерированными серверами протоколов для разрешения моков. Аутентификация не требуется.
| Метод |
Путь |
Описание |
| POST |
/mock/findGrpc |
Разрешение gRPC-мока |
| POST |
/mock/findSocket |
Разрешение WebSocket/TCP/UDP-мока |
| POST |
/mock/findKafka |
Разрешение Kafka-мока |
| POST |
/mock/findRabbitMQ |
Разрешение RabbitMQ-мока |
| POST |
/mock/findSmtp |
Разрешение SMTP-мока |
| ANY |
/stubs/* |
Разрешение HTTP-моков (универсальный маршрут) |
Как работает маршрутизация /stubs/*
Эндпоинт /stubs/* — основной маршрут разрешения моков. Он соответствует любому HTTP-методу и находит подходящий мок на основе маршрута, метода, условий и приоритета. Аутентификация не требуется для вызова стабов — это сделано намеренно, так как тестируемое приложение вызывает эти эндпоинты напрямую.
Маршрутизация по пространствам имён: Namespace извлекается из URL-пути — укажите его первым сегментом после /stubs/. Также можно передать через query-параметр. Если ни то ни другое не указано, Mockarty использует sandbox как fallback.
# Рекомендуется: namespace явно в пути (однозначно, всегда работает)
curl http://localhost:5770/stubs/sandbox/api/users/123
curl http://localhost:5770/stubs/staging/api/users/123
# Альтернатива: namespace через query-параметр
curl "http://localhost:5770/stubs/sandbox/api/users/123?namespace=staging"
# POST с телом (условия сопоставляются с телом запроса)
curl -X POST http://localhost:5770/stubs/sandbox/api/orders \
-H "Content-Type: application/json" \
-d '{"customerId": "cust-1", "items": [{"id": "item-1", "price": 29.99}]}'
Префиксы шаблонов в ответах
При построении ответов моков Mockarty поддерживает специальные префиксы для подстановки динамических данных:
| Префикс |
Описание |
Пример |
$.fake.* |
Данные, сгенерированные Faker |
$.fake.UUID, $.fake.Email, $.fake.FirstName |
$.req.* или $.body.* |
Поля тела запроса |
$.req.userId, $.body.order.items[0].id |
$.reqHeader.* |
Заголовки запроса |
$.reqHeader.Authorization[0] |
$.queryParams.* |
Параметры запроса |
$.queryParams.limit |
$.pathParam.* |
Параметры пути URL |
$.pathParam.id (для маршрута /api/users/:id) |
$.namespace |
Имя текущего пространства |
$.namespace |
$.gS.* |
Значения из глобального хранилища |
$.gS.totalUsers |
$.cS.* |
Значения из хранилища цепочки |
$.cS.orderId |
$.mS.* |
Значения из хранилища мока |
$.mS.tempKey |
Пример с параметрами пути:
cURL
# Создание мока с извлечением параметров пути (пространство "sandbox" по умолчанию)
curl -X POST http://localhost:5770/api/v1/mocks \
-H "Content-Type: application/json" \
-d '{
"id": "get-user-by-id",
"namespace": "sandbox",
"http": {
"route": "/api/users/:id",
"httpMethod": "GET"
},
"response": {
"statusCode": 200,
"payload": {
"userId": "$.pathParam.id",
"name": "$.fake.FirstName",
"namespace": "$.namespace"
}
}
}'
# Вызываем
curl http://localhost:5770/stubs/sandbox/api/users/42
# Возвращает: {"userId": "42", "name": "Alice", "namespace": "sandbox"}
CLI
mockarty-cli mock create \
--id get-user-by-id \
--route /api/users/:id \
--method GET \
--status 200 \
--body '{"userId": "$.pathParam.id", "name": "$.fake.FirstName", "namespace": "$.namespace"}'
# Вызываем
curl http://localhost:5770/stubs/sandbox/api/users/42
Go
mock := mockarty.NewMockBuilder().
ID("get-user-by-id").
HTTP(func(h *mockarty.HTTPBuilder) {
h.Route("/api/users/:id").Method("GET")
}).
Response(func(r *mockarty.ResponseBuilder) {
r.Status(200).JSONBody(map[string]any{
"userId": "$.pathParam.id",
"name": "$.fake.FirstName",
"namespace": "$.namespace",
})
}).
Build()
_, err := client.Mocks().Create(context.Background(), mock)
Python
mock = (
MockBuilder.http("/api/users/:id", "GET")
.id("get-user-by-id")
.respond(200, body={
"userId": "$.pathParam.id",
"name": "$.fake.FirstName",
"namespace": "$.namespace",
})
.build()
)
client.mocks.create(mock)
Java
Mock mock = MockBuilder.http("/api/users/:id", "GET")
.id("get-user-by-id")
.respond(200, Map.of(
"userId", "$.pathParam.id",
"name", "$.fake.FirstName",
"namespace", "$.namespace"
))
.build();
client.mocks().create(mock);

Связанная документация