API Guide
Руководство по работе с Integ API.
Обзор
Integ API предоставляет RESTful API для управления интеграциями, их secrets, handlers и access tokens.
Base URL
Local: http://localhost:3000/api
Development: https://dev-api.yourdomain.com/api
Production: https://api.yourdomain.com/apiДокументация API
API документирован с использованием Scalar:
API Reference (Scalar)
- Public API:
http://localhost:3000/api/reference - Internal API (все эндпоинты):
http://localhost:3000/api/reference-full - Docs (VitePress):
https://api.integ.docs.happ.tools
Аутентификация
Большинство эндпоинтов требуют JWT токен в заголовке Authorization.
Формат заголовка
Authorization: Bearer <your-jwt-token>Публичные эндпоинты
Не требуют токен:
POST /api/auth/sign-upPOST /api/auth/sign-inGET /health
Response Format
Success Response
{
"data": { ... },
"success": true
}Paginated Response
{
"data": [...],
"totalCount": 100,
"page": {
"number": 1,
"size": 20
}
}Error Response
{
"statusCode": 400,
"message": "Error description",
"error": "Bad Request"
}HTTP Status Codes
| Code | Meaning |
|---|---|
| 200 | OK - Успешный запрос |
| 201 | Created - Ресурс создан |
| 400 | Bad Request - Невалидные данные |
| 401 | Unauthorized - Требуется аутентификация |
| 403 | Forbidden - Недостаточно прав |
| 404 | Not Found - Ресурс не найден |
| 500 | Internal Server Error - Ошибка сервера |
Pagination
Используйте параметры take и skip для пагинации:
GET /api/integrations?take=20&skip=0take- количество записей (по умолчанию 20)skip- пропустить записей (по умолчанию 0)
Filtering
Фильтрация через query параметры:
GET /api/integrations?type=telegram&userId=123Sorting
Сортировка через параметр order:
GET /api/integrations?order[createdAt]=DESCRelations
Включение связанных данных через параметр relations:
GET /api/integrations?relations=user,handlersПримеры запросов
cURL
# Login
curl -X POST http://localhost:3000/api/auth/sign-in \
-H "Content-Type: application/json" \
-d '{"email":"admin@example.com","password":"password"}'
# Get integrations
curl -X GET http://localhost:3000/api/integrations \
-H "Authorization: Bearer <token>"JavaScript (fetch)
// Login
const loginResponse = await fetch("http://localhost:3000/api/auth/sign-in", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
email: "admin@example.com",
password: "password"
})
});
const { accessToken } = await loginResponse.json();
// Get integrations
const integrationsResponse = await fetch("http://localhost:3000/api/integrations", {
headers: {
Authorization: `Bearer ${accessToken}`
}
});
const integrations = await integrationsResponse.json();TypeScript (axios)
import axios from "axios";
const api = axios.create({
baseURL: "http://localhost:3000/api"
});
// Login
const { data } = await api.post("/auth/sign-in", {
email: "admin@example.com",
password: "password"
});
// Set token for future requests
api.defaults.headers.common["Authorization"] = `Bearer ${data.accessToken}`;
// Get integrations
const integrations = await api.get("/integrations");Rate Limiting
В production применяются rate limits:
- Аутентификация: 5 попыток в минуту
- API запросы: 100 запросов в минуту
При превышении лимита возвращается 429 Too Many Requests.
CORS
CORS настроен для работы с фронтенд приложениями.
Development:
Access-Control-Allow-Origin: *Production:
Access-Control-Allow-Origin: https://yourdomain.comРазделы
- Аутентификация - JWT аутентификация для веб-интерфейса
- Работа с интеграциями - Управление интеграциями, handlers
- Testing Module - Автоматизированное тестирование AI интеграций
- Secrets API - Управление секретами интеграций (D1)
- Cache API - Управление KV для кэширования (высокоуровневый)
- D1 Proxy API - Прямой доступ к D1 таблицам (админ)
- KV Proxy API - Прямой доступ к KV (админ)
- Access Tokens - Токены доступа для M2M интеграций
Scalar UI
Для удобства рекомендуем использовать Scalar для тестирования API:
- Откройте
http://localhost:3000/api/reference-full - Авторизуйтесь (Basic Auth для доступа к внутренней документации)
- Тестируйте эндпоинты прямо в браузере
WebSocket (Будущее)
В будущих версиях планируется поддержка WebSocket для real-time уведомлений об изменениях интеграций.