Skip to content

Сервисы

Подробная документация всех сервисов приложения.

ApiService (Базовый HTTP сервис)

Базовый сервис для работы с HTTP запросами. Автоматически обрабатывает обёрнутые ответы API.

Структура

typescript
interface IApiWrapper<T> {
	success: boolean;
	data: T;
}

@Injectable({ providedIn: "root" })
export class ApiService {
	private readonly http = inject(HttpClient);
	private readonly baseUrl = environment.apiUrl;

	get<T>(endpoint: string) {
		return this.http.get<IApiWrapper<T>>(`${this.baseUrl}${endpoint}`).pipe(map((response) => response.data));
	}

	post<T>(endpoint: string, body: unknown) {
		return this.http.post<IApiWrapper<T>>(`${this.baseUrl}${endpoint}`, body).pipe(map((response) => response.data));
	}

	put<T>(endpoint: string, body: unknown) {
		return this.http.put<IApiWrapper<T>>(`${this.baseUrl}${endpoint}`, body).pipe(map((response) => response.data));
	}

	patch<T>(endpoint: string, body: unknown) {
		return this.http.patch<IApiWrapper<T>>(`${this.baseUrl}${endpoint}`, body).pipe(map((response) => response.data));
	}

	delete<T>(endpoint: string) {
		return this.http.delete<IApiWrapper<T>>(`${this.baseUrl}${endpoint}`).pipe(map((response) => response.data));
	}
}

Как это работает

  1. Запрос: GET /integrations
  2. API ответ: { "success": true, "data": [...] }
  3. map(response => response.data): Извлекает data из обёртки
  4. Компонент получает: [...] (просто массив)

Пример использования

typescript
// IntegrationsService использует ApiService
@Injectable({ providedIn: "root" })
export class IntegrationsService {
	private readonly api = inject(ApiService);

	getAll() {
		// API возвращает: { success: true, data: [...] }
		// ApiService возвращает: [...]
		return this.api.get<IIntegration[]>("/integrations");
	}
}

// Компонент подписывается на результат
this.integrationsService.getAll().subscribe((integrations) => {
	// integrations здесь уже распакованный массив
	this.integrations = integrations;
});

Важно: AuthService работает по-другому

INFO

AuthService использует прямой HttpClient БЕЗ обёртки, так как auth эндпоинты не используют обёрнутый формат.

typescript
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)
    );
}

AuthService

Сервис для аутентификации и управления JWT токенами.

Методы

login(email: string, password: string)

Выполняет вход пользователя в систему.

Параметры:

  • email — email пользователя
  • password — пароль

Возвращает: Observable<void>

Пример:

typescript
this.authService.login("user@example.com", "password123").subscribe(() => {
	console.log("Успешный вход");
});

logout()

Выполняет выход из системы и редирект на страницу входа.

Пример:

typescript
this.authService.logout();

me()

Получает информацию о текущем пользователе.

Возвращает: Observable<IUser>

Пример:

typescript
this.authService.me().subscribe((user) => {
	console.log(user.email);
});

isAuthenticated

Геттер для проверки авторизации пользователя.

Возвращает: boolean

Пример:

typescript
if (this.authService.isAuthenticated) {
	// Пользователь авторизован
}

isAuthenticated$

Observable для отслеживания состояния авторизации.

Возвращает: Observable<boolean>

Пример:

typescript
this.authService.isAuthenticated$.subscribe((isAuth) => {
	console.log("Авторизован:", isAuth);
});

getAccessToken()

Получает access токен из localStorage.

Возвращает: string | null


getRefreshToken()

Получает refresh токен из localStorage.

Возвращает: string | null


validateToken()

Валидирует текущий токен через запрос к API.

Возвращает: Observable<boolean>


IntegrationsService

Сервис для управления интеграциями.

Методы

getAll()

Получить список всех интеграций.

Возвращает: Observable<IIntegration[]>

Пример:

typescript
this.integrationsService.getAll().subscribe((integrations) => {
	console.log(integrations);
});

getById(id: string)

Получить интеграцию по ID.

Параметры:

  • id — UUID интеграции

Возвращает: Observable<IIntegration>

Пример:

typescript
this.integrationsService.getById("uuid-here").subscribe((integration) => {
	console.log(integration.name);
});

create(data: ICreateIntegrationRequest)

Создать новую интеграцию.

Параметры:

  • data — данные для создания интеграции
    • name — название интеграции

Возвращает: Observable<IIntegration>

Пример:

typescript
this.integrationsService.create({ name: "My Integration" }).subscribe((integration) => {
	console.log("Создана:", integration.id);
});

update(id: string, data: IUpdateIntegrationRequest)

Обновить интеграцию.

Параметры:

  • id — UUID интеграции
  • data — данные для обновления
    • name? — новое название (опционально)

Возвращает: Observable<IIntegration>


delete(id: string)

Удалить интеграцию.

Параметры:

  • id — UUID интеграции

Возвращает: Observable<null>


syncHandlers(id: string, data: ISyncHandlersRequest)

Синхронизировать handlers из OpenAPI спецификации integ-core.

Параметры:

  • id — UUID интеграции
  • data — данные для синхронизации
    • integrationName — имя интеграции в integ-core (например, "sofa")
    • baseUrl? — базовый URL (опционально, по умолчанию из env)

Возвращает: Observable<ISyncHandlersResponse>

Пример:

typescript
this.integrationsService.syncHandlers("integration-uuid", { integrationName: "sofa" }).subscribe((result) => {
	console.log("Created:", result.created);
	console.log("Updated:", result.updated);
});

CredentialsService

Сервис для управления credentials интеграций.

Методы

getByIntegration(integrationId: string)

Получить все credentials интеграции.

Параметры:

  • integrationId — UUID интеграции

Возвращает: Observable<ICredential[]>

Пример:

typescript
this.credentialsService.getByIntegration("integration-uuid").subscribe((credentials) => {
	console.log(credentials);
});

create(integrationId: string, data: ICreateCredentialRequest)

Создать новый credential.

Параметры:

  • integrationId — UUID интеграции
  • data — данные credential
    • key — ключ
    • value — значение

Возвращает: Observable<ICredential>

Пример:

typescript
this.credentialsService
	.create("integration-uuid", {
		key: "API_KEY",
		value: "secret-key-here"
	})
	.subscribe();

update(integrationId: string, credentialId: string, data: IUpdateCredentialRequest)

Обновить credential.

Параметры:

  • integrationId — UUID интеграции
  • credentialId — UUID credential
  • data — данные для обновления
    • value — новое значение

Возвращает: Observable<ICredential>


delete(integrationId: string, credentialId: string)

Удалить credential.

Параметры:

  • integrationId — UUID интеграции
  • credentialId — UUID credential

Возвращает: Observable<null>


SecretsService

Сервис для управления секретами интеграций.

Методы

API идентичен CredentialsService:

  • getByIntegration(integrationId: string) — получить все секреты
  • create(integrationId: string, data: ICreateSecretRequest) — создать секрет
  • update(integrationId: string, secretId: string, data: IUpdateSecretRequest) — обновить
  • delete(integrationId: string, secretId: string) — удалить

HandlersService

Сервис для управления обработчиками событий.

Методы

getByIntegration(integrationId: string)

Получить все handlers интеграции.

Возвращает: Observable<IHandler[]>


create(integrationId: string, data: ICreateHandlerRequest)

Создать новый handler.

Параметры:

  • integrationId — UUID интеграции
  • data — данные handler
    • name — название handler'а
    • defaultArgs? — дефолтные аргументы (опционально)

Возвращает: Observable<IHandler>

Пример:

typescript
this.handlersService
	.create("integration-uuid", {
		name: "my-webhook",
		defaultArgs: { timeout: 5000 }
	})
	.subscribe();

update(integrationId: string, handlerId: string, data: IUpdateHandlerRequest)

Обновить handler.

Параметры:

  • integrationId — UUID интеграции
  • handlerId — UUID handler'а
  • data — данные для обновления
    • name? — новое название
    • defaultArgs? — новые дефолтные аргументы

Возвращает: Observable<IHandler>


delete(integrationId: string, handlerId: string)

Удалить handler.

Возвращает: Observable<null>


execute(handlerName: string, method?: string, payload?: IHandlerExecuteRequest)

Выполнить handler (отправить webhook).

Параметры:

  • handlerName — название handler'а
  • method — HTTP метод (по умолчанию 'POST')
  • payload? — данные запроса
    • url? — кастомный URL (опционально)
    • body? — тело запроса (опционально)

Возвращает: Observable<IHandlerExecuteResponse>

Пример:

typescript
this.handlersService
	.execute("my-webhook", "POST", {
		body: { message: "Hello" }
	})
	.subscribe((response) => {
		console.log("Status:", response.statusCode);
		console.log("Body:", response.body);
	});

AccessTokensService

Сервис для управления токенами доступа к API.

Методы

getAll()

Получить все access tokens.

Возвращает: Observable<IAccessToken[]>

Пример:

typescript
this.accessTokensService.getAll().subscribe((tokens) => {
	console.log(tokens);
});

create(data: ICreateAccessTokenRequest)

Создать новый access token.

Параметры:

  • data — данные для создания
    • name — название токена

Возвращает: Observable<IAccessTokenResponse>

Пример:

typescript
this.accessTokensService.create({ name: "My API Token" }).subscribe((response) => {
	console.log("Token:", response.token);
	// ВАЖНО: token виден только один раз!
});

Внимание

Token виден только один раз при создании. Сохраните его в безопасном месте!


delete(tokenId: string)

Удалить access token.

Параметры:

  • tokenId — UUID токена

Возвращает: Observable<null>


Следующие шаги

SaaS Admin Documentation