Интерфейсы
Документация всех TypeScript интерфейсов, используемых в приложении.
Аутентификация
IUser
Интерфейс пользователя системы.
interface IUser {
id: string; // UUID пользователя
email: string; // Email адрес
firstName?: string; // Имя (опционально)
lastName?: string; // Фамилия (опционально)
createdAt?: string; // Дата создания (ISO 8601)
}ILoginRequest
Данные для входа в систему.
interface ILoginRequest {
email: string; // Email пользователя
password: string; // Пароль
}ILoginResponse
Ответ при успешной авторизации.
interface ILoginResponse {
accessToken: string; // JWT access токен
refreshToken: string; // JWT refresh токен
}IRegisterRequest
Данные для регистрации нового пользователя.
interface IRegisterRequest {
email: string; // Email адрес
password: string; // Пароль
firstName?: string; // Имя (опционально)
lastName?: string; // Фамилия (опционально)
}Интеграции
IIntegration
Основной интерфейс интеграции.
interface IIntegration {
id: string; // UUID интеграции
name: string; // Название интеграции
createdAt: string; // Дата создания (ISO 8601)
updatedAt: string; // Дата обновления (ISO 8601)
}ICreateIntegrationRequest
Данные для создания интеграции.
interface ICreateIntegrationRequest {
name: string; // Название интеграции
}IUpdateIntegrationRequest
Данные для обновления интеграции.
interface IUpdateIntegrationRequest {
name?: string; // Новое название (опционально)
}ISyncHandlersRequest
Данные для синхронизации handlers из OpenAPI.
interface ISyncHandlersRequest {
integrationName: string; // Имя интеграции в integ-core (например, "sofa")
baseUrl?: string; // Базовый URL integ-core (опционально)
}ISyncHandlersResponse
Ответ после синхронизации handlers.
interface ISyncHandlersResponse {
success: boolean; // Успешность операции
created: number; // Количество созданных handlers
updated: number; // Количество обновлённых handlers
}Credentials
ICredential
Интерфейс credential интеграции.
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.
interface ICreateCredentialRequest {
key: string; // Ключ (например, "API_KEY")
value: string; // Значение
}IUpdateCredentialRequest
Данные для обновления credential.
interface IUpdateCredentialRequest {
value: string; // Новое значение
}Secrets
ISecret
Интерфейс секрета интеграции.
interface ISecret {
id: string; // UUID секрета
integrationId: string; // UUID родительской интеграции
key: string; // Ключ секрета
value: string; // Значение секрета (зашифровано)
createdAt: string; // Дата создания (ISO 8601)
updatedAt: string; // Дата обновления (ISO 8601)
}ICreateSecretRequest
Данные для создания секрета.
interface ICreateSecretRequest {
key: string; // Ключ (например, "WEBHOOK_SECRET")
value: string; // Значение
}IUpdateSecretRequest
Данные для обновления секрета.
interface IUpdateSecretRequest {
value: string; // Новое значение
}Handlers
IHandler
Интерфейс обработчика событий.
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)
}Пример:
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'а.
interface ICreateHandlerRequest {
name: string; // Название handler'а
defaultArgs?: Record<string, any>; // Дефолтные аргументы (опционально)
}IUpdateHandlerRequest
Данные для обновления handler'а.
interface IUpdateHandlerRequest {
name?: string; // Новое название (опционально)
defaultArgs?: Record<string, any>; // Новые аргументы (опционально)
}IHandlerExecuteRequest
Данные для выполнения handler'а.
interface IHandlerExecuteRequest {
url?: string; // Кастомный URL (опционально)
body?: Record<string, unknown>; // Тело запроса (опционально)
}IHandlerExecuteResponse
Ответ после выполнения handler'а.
interface IHandlerExecuteResponse {
statusCode: number; // HTTP статус код
body: unknown; // Тело ответа
timestamp: number; // Unix timestamp выполнения
}Access Tokens
IAccessToken
Интерфейс токена доступа к API.
interface IAccessToken {
id: string; // UUID токена
name: string; // Название токена
token?: string; // Токен (видно только при создании)
expiresAt?: string; // Дата истечения (опционально, ISO 8601)
createdAt: string; // Дата создания (ISO 8601)
}ICreateAccessTokenRequest
Данные для создания access token.
interface ICreateAccessTokenRequest {
name: string; // Название токена
}IAccessTokenResponse
Ответ при создании токена (содержит полный токен).
interface IAccessTokenResponse extends IAccessToken {
token: string; // Полный токен (виден только один раз!)
}Важно
Токен виден только один раз при создании. После этого увидеть его повторно невозможно!
Broadcasts
IBroadcast
Интерфейс email broadcast кампании.
interface IBroadcast {
id: string;
title: string;
subject: string;
content: string;
status: string; // draft | scheduled | sent | failed
audienceId?: string;
audienceName?: string;
from: string;
scheduledAt?: string;
sentAt?: string;
totalRecipients: number;
delivered: number;
opened: number;
clicked: number;
bounced: number;
complained: number;
createdAt: string;
updatedAt: string;
}IBroadcastRecipient
Интерфейс получателя broadcast с трекингом статуса.
interface IBroadcastRecipient {
id: string;
broadcastId: string;
email: string;
status: string; // pending | sent | delivered | bounced | complained | opened | clicked
deliveredAt?: string;
openedAt?: string;
clickedAt?: string;
bouncedAt?: string;
createdAt: string;
}IEmailEvent
Интерфейс события отправки писем.
interface IEmailEvent {
id: string;
emailId: string;
broadcastId?: string;
type: string; // delivered | opened | clicked | bounced | complained
email: string;
metadata?: Record<string, unknown>;
createdAt: string;
}IAudience
Интерфейс аудитории для таргетирования broadcast.
interface IAudience {
id: string;
name: string;
contactsCount: number;
createdAt: string;
updatedAt: string;
}IAudienceContact
Интерфейс контакта в аудитории.
interface IAudienceContact {
id: string;
audienceId: string;
email: string;
firstName?: string;
lastName?: string;
unsubscribed: boolean;
createdAt: string;
}Общие интерфейсы
API Response Wrappers
Некоторые эндпоинты могут возвращать обернутые ответы:
interface IApiResponse<T> {
data: T;
message?: string;
status: "success" | "error";
}
interface IApiError {
message: string;
statusCode: number;
error?: string;
}Pagination
Для пагинированных запросов:
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; // Всего страниц
}