Skip to content

Интерфейсы

Документация всех TypeScript интерфейсов, используемых в приложении.

Аутентификация

IUser

Интерфейс пользователя системы.

typescript
interface IUser {
	id: string; // UUID пользователя
	email: string; // Email адрес
	firstName?: string; // Имя (опционально)
	lastName?: string; // Фамилия (опционально)
	createdAt?: string; // Дата создания (ISO 8601)
}

ILoginRequest

Данные для входа в систему.

typescript
interface ILoginRequest {
	email: string; // Email пользователя
	password: string; // Пароль
}

ILoginResponse

Ответ при успешной авторизации.

typescript
interface ILoginResponse {
	accessToken: string; // JWT access токен
	refreshToken: string; // JWT refresh токен
}

IRegisterRequest

Данные для регистрации нового пользователя.

typescript
interface IRegisterRequest {
	email: string; // Email адрес
	password: string; // Пароль
	firstName?: string; // Имя (опционально)
	lastName?: string; // Фамилия (опционально)
}

Интеграции

IIntegration

Основной интерфейс интеграции.

typescript
interface IIntegration {
	id: string; // UUID интеграции
	name: string; // Название интеграции
	createdAt: string; // Дата создания (ISO 8601)
	updatedAt: string; // Дата обновления (ISO 8601)
}

ICreateIntegrationRequest

Данные для создания интеграции.

typescript
interface ICreateIntegrationRequest {
	name: string; // Название интеграции
}

IUpdateIntegrationRequest

Данные для обновления интеграции.

typescript
interface IUpdateIntegrationRequest {
	name?: string; // Новое название (опционально)
}

ISyncHandlersRequest

Данные для синхронизации handlers из OpenAPI.

typescript
interface ISyncHandlersRequest {
	integrationName: string; // Имя интеграции в integ-core (например, "sofa")
	baseUrl?: string; // Базовый URL integ-core (опционально)
}

ISyncHandlersResponse

Ответ после синхронизации handlers.

typescript
interface ISyncHandlersResponse {
	success: boolean; // Успешность операции
	created: number; // Количество созданных handlers
	updated: number; // Количество обновлённых handlers
}

Credentials

ICredential

Интерфейс credential интеграции.

typescript
interface ICredential {
	id: string; // UUID credential
	integrationId: string; // UUID родительской интеграции
	key: string; // Ключ credential
	value: string; // Значение credential
	createdAt: string; // Дата создания (ISO 8601)
	updatedAt: string; // Дата обновления (ISO 8601)
}

ICreateCredentialRequest

Данные для создания credential.

typescript
interface ICreateCredentialRequest {
	key: string; // Ключ (например, "API_KEY")
	value: string; // Значение
}

IUpdateCredentialRequest

Данные для обновления credential.

typescript
interface IUpdateCredentialRequest {
	value: string; // Новое значение
}

Secrets

ISecret

Интерфейс секрета интеграции.

typescript
interface ISecret {
	id: string; // UUID секрета
	integrationId: string; // UUID родительской интеграции
	key: string; // Ключ секрета
	value: string; // Значение секрета (зашифровано)
	createdAt: string; // Дата создания (ISO 8601)
	updatedAt: string; // Дата обновления (ISO 8601)
}

ICreateSecretRequest

Данные для создания секрета.

typescript
interface ICreateSecretRequest {
	key: string; // Ключ (например, "WEBHOOK_SECRET")
	value: string; // Значение
}

IUpdateSecretRequest

Данные для обновления секрета.

typescript
interface IUpdateSecretRequest {
	value: string; // Новое значение
}

Handlers

IHandler

Интерфейс обработчика событий.

typescript
interface IHandler {
	id: string; // UUID handler'а
	integrationId: string; // UUID родительской интеграции
	name: string; // Название handler'а (для webhook URL)
	defaultArgs: Record<string, any>; // Дефолтные аргументы
	createdAt: string; // Дата создания (ISO 8601)
	updatedAt: string; // Дата обновления (ISO 8601)
}

Пример:

typescript
const handler: IHandler = {
	id: "uuid-here",
	integrationId: "integration-uuid",
	name: "order-created",
	defaultArgs: {
		timeout: 5000,
		retries: 3
	},
	createdAt: "2024-01-01T00:00:00.000Z",
	updatedAt: "2024-01-01T00:00:00.000Z"
};

ICreateHandlerRequest

Данные для создания handler'а.

typescript
interface ICreateHandlerRequest {
	name: string; // Название handler'а
	defaultArgs?: Record<string, any>; // Дефолтные аргументы (опционально)
}

IUpdateHandlerRequest

Данные для обновления handler'а.

typescript
interface IUpdateHandlerRequest {
	name?: string; // Новое название (опционально)
	defaultArgs?: Record<string, any>; // Новые аргументы (опционально)
}

IHandlerExecuteRequest

Данные для выполнения handler'а.

typescript
interface IHandlerExecuteRequest {
	url?: string; // Кастомный URL (опционально)
	body?: Record<string, unknown>; // Тело запроса (опционально)
}

IHandlerExecuteResponse

Ответ после выполнения handler'а.

typescript
interface IHandlerExecuteResponse {
	statusCode: number; // HTTP статус код
	body: unknown; // Тело ответа
	timestamp: number; // Unix timestamp выполнения
}

Access Tokens

IAccessToken

Интерфейс токена доступа к API.

typescript
interface IAccessToken {
	id: string; // UUID токена
	name: string; // Название токена
	token?: string; // Токен (видно только при создании)
	expiresAt?: string; // Дата истечения (опционально, ISO 8601)
	createdAt: string; // Дата создания (ISO 8601)
}

ICreateAccessTokenRequest

Данные для создания access token.

typescript
interface ICreateAccessTokenRequest {
	name: string; // Название токена
}

IAccessTokenResponse

Ответ при создании токена (содержит полный токен).

typescript
interface IAccessTokenResponse extends IAccessToken {
	token: string; // Полный токен (виден только один раз!)
}

Важно

Токен виден только один раз при создании. После этого увидеть его повторно невозможно!


Общие интерфейсы

API Response Wrappers

Некоторые эндпоинты могут возвращать обернутые ответы:

typescript
interface IApiResponse<T> {
	data: T;
	message?: string;
	status: "success" | "error";
}

interface IApiError {
	message: string;
	statusCode: number;
	error?: string;
}

Pagination

Для пагинированных запросов:

typescript
interface IPaginationParams {
	page?: number; // Номер страницы (по умолчанию 1)
	limit?: number; // Кол-во элементов (по умолчанию 10)
	sortBy?: string; // Поле для сортировки
	sortOrder?: "asc" | "desc"; // Направление сортировки
}

interface IPaginatedResponse<T> {
	data: T[];
	total: number; // Общее кол-во элементов
	page: number; // Текущая страница
	limit: number; // Элементов на странице
	totalPages: number; // Всего страниц
}

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

SaaS Admin Documentation