API Reference
Обзор всех доступных сервисов и API приложения Integ Admin.
Формат API Ответов
API использует два разных формата в зависимости от типа эндпоинта:
Эндпоинты аутентификации (без обёртки)
Auth эндпоинты возвращают данные напрямую:
// POST /auth/sign-in
{
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "placeholder"
}
// GET /auth/me
{
"id": "uuid",
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe",
"createdAt": "2024-01-01T00:00:00.000Z"
}Остальные эндпоинты (с обёрткой)
Все остальные эндпоинты возвращают данные в обёртке:
// GET /integrations
{
"success": true,
"data": [
{
"id": "uuid",
"name": "Integration Name",
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z"
}
]
}
// GET /integrations/:id/credentials
{
"success": true,
"data": [
{
"id": "uuid",
"integrationId": "uuid",
"key": "API_KEY",
"value": "secret",
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z"
}
]
}Обработка Ответов
ApiService (для эндпоинтов с обёрткой)
ApiService автоматически извлекает data из обёрнутого ответа:
interface IApiWrapper<T> {
success: boolean;
data: T;
}
@Injectable({ providedIn: "root" })
export class ApiService {
get<T>(endpoint: string) {
return this.http.get<IApiWrapper<T>>(`${this.baseUrl}${endpoint}`).pipe(map((response) => response.data));
}
// post, put, patch, delete работают аналогично
}Пример использования:
// API возвращает: { success: true, data: [...] }
// ApiService возвращает: [...]
integrations$ = this.integrationsService.getAll();
// Компонент получает напрямую массивAuthService (для auth эндпоинтов без обёртки)
AuthService работает напрямую с HttpClient, так как auth эндпоинты не используют обёртку:
@Injectable({ providedIn: "root" })
export class AuthService {
login(email: string, password: string) {
return this.http.post<ILoginResponse>(`${this.baseUrl}/auth/sign-in`, { email, password }).pipe(
tap((response) => {
this.setTokens(response.accessToken, response.refreshToken);
}),
map(() => undefined)
);
}
me() {
return this.http.get<IUser>(`${this.baseUrl}/auth/me`);
}
}Базовый API Service
Все сервисы используют базовый ApiService для работы с HTTP запросами.
ApiService
Предоставляет методы для выполнения HTTP запросов:
@Injectable({ providedIn: "root" })
export class ApiService {
get<T>(url: string): Observable<T>;
post<T>(url: string, data: unknown): Observable<T>;
put<T>(url: string, data: unknown): Observable<T>;
delete<T>(url: string): Observable<T>;
}Доменные сервисы
AuthService
Сервис для аутентификации и авторизации пользователей.
IntegrationsService
Управление интеграциями (CRUD операции).
CredentialsService
Управление credentials для интеграций.
SecretsService
Управление секретами интеграций.
HandlersService
Управление обработчиками событий.
AccessTokensService
Управление токенами доступа к API.
Интерфейсы
Все TypeScript интерфейсы описаны в разделе Интерфейсы.
HTTP Interceptors
Auth Interceptor
Автоматически добавляет JWT токен к каждому запросу:
export const authInterceptor: HttpInterceptorFn = (req, next) => {
const token = localStorage.getItem("access_token");
if (token) {
req = req.clone({
setHeaders: { Authorization: `Bearer ${token}` }
});
}
return next(req);
};Error Interceptor
Обрабатывает HTTP ошибки и выполняет logout при 401:
export const errorInterceptor: HttpInterceptorFn = (req, next) => {
return next(req).pipe(
catchError((error: HttpErrorResponse) => {
if (error.status === 401) {
// Logout and redirect to login
}
return throwError(() => error);
})
);
};Guards
authGuard
Защищает маршруты, требующие авторизации:
export const authGuard: CanActivateFn = () => {
const authService = inject(AuthService);
const router = inject(Router);
if (!authService.isAuthenticated) {
return router.createUrlTree(["/auth/login"]);
}
return true;
};noAuthGuard
Редиректит авторизованных пользователей:
export const noAuthGuard: CanActivateFn = () => {
const authService = inject(AuthService);
const router = inject(Router);
if (authService.isAuthenticated) {
return router.createUrlTree(["/admin/dashboard"]);
}
return true;
};Следующие шаги
- Сервисы — подробная документация всех сервисов
- Интерфейсы — TypeScript типы и интерфейсы
- Функции — описание функциональности