Перейти к основному содержимому
Altcraft Docs LogoAltcraft Docs Logo
Пользователям iconПользователям
Разработчикам iconРазработчикам
Администраторам iconАдминистраторам
Русский
  • Русский
  • English
Войти
    API пользователяВзаимодействие с APIМатчинг
      Профилиarrow
    • Импортировать профильОбновить профильДобавить профиль в базу данныхПолучить информацию о профилеИмпортировать профиль в RabbitMQМассовое добавление профилей в базу данныхМассовое обновление профилейМассовый импорт профилейУдалить профильФункциональное обновление полей базыФункциональное обновление полей подпискиВыгрузка профилей в файлПолучение данных по нескольким профилямОбъединение нескольких профилейОтписать профиль от ресурсаРазделение профиля
        Историяarrow
      • Получить историю одного профиляПолучить историю нескольких профилей
        Связи профилейarrow
      • Добавить связьУдалить связьУсилить/ослабить связьПерезаписать значения свойств связиПолучить информацию о связях профиляПолучить список связей профиля
        Подпискиarrow
      • Добавить или редактировать подпискуПолучить все подписки профиляПолучить все подписки нескольких профилейПолучить информацию о подписке профиляУдалить подписку профиляВосстановить удаленную подписку профиляПриостановить все подпискиВосстановить все приостановленные подписки
      Базы данныхarrow
    • Получить список баз данныхПолучить информацию о базе данныхПолучить информацию о полях базы данныхОчистка базы данных для тестированияПолучить статистику по базе данныхОбновить статистику по базе данных
      Ресурсыarrow
    • Получить список ресурсовПолучить информацию о ресурсеПолучить информацию о полях подписки ресурсаПолучить статистику по ресурсамОбновить статистику по ресурсам
      Сегментыarrow
    • Добавить сегментОбновить сегментПолучить информацию о сегментеПолучить список сегментовУдалить сегментПолучить статистику по сегментамОбновить статистику по сегментамДобавить или удалить профильПолучить данные профилей статического или обновляемого сегмента
      Стоп-спискиarrow
    • Добавить стоп-списокПереименовать стоп-списокПолучить информацию о стоп-спискеПолучить информацию о нескольких стоп-списковУдалить стоп-списокВыгрузить данные из стоп-списка в файл
        Добавление и удаление из стоп-спискаarrow
      • Проверить email-адрес в стоп-спискеДобавить email-адрес в стоп-списокДобавить один или несколько email-адресов в стоп-списокУдалить email-адрес из стоп-спискаУдалить все email-адреса из стоп-спискаПроверить домен в стоп-спискеДобавить домен в стоп-списокДобавить один или несколько доменов в стоп-списокУдалить домен из стоп-спискаУдалить все домены из стоп-спискаПроверить номер телефона в стоп-спискеДобавить номер телефона в стоп-списокДобавить один или несколько номеров в стоп-списокУдалить номер из стоп-спискаУдалить все номера из стоп-списка
      Шаблоныarrow
    • Получить список шаблоновПолучить информацию о шаблонеУдалить шаблонДобавить шаблон сообщенияОбновить шаблон сообщенияChannel object
      Рассылкиarrow
    • Получить список рассылокПолучить информацию о рассылкеПолучить лог рассылкиКлонировать рассылкуУдалить рассылкуАктивировать рассылкуДеактивировать рассылкуПолучить статус рассылки
        Броадкаст рассылкиarrow
      • Получить список броадкаст рассылокПолучить информацию о броадкаст рассылкеДобавить броадкаст рассылкуОбновить броадкаст рассылкуЗапустить броадкаст рассылку
        Регулярные рассылкиarrow
      • Получить список регулярных рассылокПолучить информацию о регулярной рассылкеДобавить регулярную рассылкуОбновить регулярную рассылкуЗапустить регулярную рассылку
        Триггерыarrow
      • Получить список триггерных рассылокПолучить информацию о триггерной рассылкеДобавить триггерную рассылкуОбновить триггерную рассылкуЗапуск триггерной рассылки (API call)Импорт профиля + Отправка триггераЗадание на массовую отправку триггераЗадание на массовый импорт профилей + отправка триггераМассовая отправка триггераМассовый импорт профилей + отправка триггераКлонировать триггер рассылкуData array
      Кампанииarrow
    • Получить информацию о кампанииПолучить список кампанийАктивация кампанииЗавершение кампанииДеактивация кампанииПолучить статус кампании
      Сценарии (цепочки)arrow
    • Отправить профиль клиента в сценарийОдновременный импорт и запуск профиля в сценарийМассовый импорт и запуск профилей в сценарийЗадание на массовый импорт и запуск профилей в сценарийПолучить список сценариевАктивировать сценарийДеактивировать сценарийПолучить информацию о сценарииИзменить приоритет сценария
      Промокодыarrow
    • Импортировать промокодыПолучить информацию о промокодеАктивировать промокодОбновить промокодПривязать промокод к профилюОтвязать промокод от профиляПолучить все промокоды
      Программы лояльностиarrow
    • Получить уровень профиля в программе лояльностиЭкспорт транзакций балловСгораемые баллы за периодПолучение транзакций по счёту профиляПолучение списка триггерных промоакцийНачисление баллов участникуСписание баллов участникаПодтверждение временной транзакцииПредварительный расчет заказаПодтверждение заказаОтмена временной транзакцииОтмена балльной транзакцииПолучение баланса балльного счётаРегистрация участника в программе лояльностиМассовая регистрация участников в программу лояльностиЗадание на массовое добавление участников в программу лояльностиУдаление участника из программы лояльности
      Формыarrow
    • Получить информацию о формеПолучение списка формЭкспорт данных заполнения формы по пользователюЭкспорт данных заполнений формыОпубликовать формуСнять форму с публикацииУдалить форму
      Целиarrow
    • Регистрация события достижения цели
      Пуши приложенийarrow
    • Обработка и добавление подпискиДобавить события с app push
      Маркетarrow
      • Объекты маркетаarrow
      • Структура заказа (order data object)Product data objectСтруктура SKU (SKU data object)Категории (categories array)Custom fields array
        Заказыarrow
      • Импорт заказа и статусов позицийПолучить список заказовУдалить заказПолучить статус заказаИзменение статуса позиции заказа
        Продукты и SKUarrow
      • Импорт продуктов, SKU и категорийПолучение списка продуктовПолучение списка SKUИмпорт SKU и категорийУдалить продуктыУдалить SKU
      Отчеты и статистикаarrow
    • Получить сводный отчетПолучить отчет о возвратахПолучить отчет о недоставках
      Сендерыarrow
    • Получить список сендеров
        Виртуальные сендерыarrow
      • Получить список виртуальных сендеровПолучить информацию о виртуальном сендереКлонировать виртуальный сендерДобавить виртуальный сендерОбновить виртуальный сендерУдалить виртуальный сендер
      Объектыarrow
    • AKMTA objectContent objectCustom channels rules objectEmail rule objectFile objectProfile data objectSMS rule objectSender objectSender typesStart schedule objectSubscription objectTrigger types
      Запросы к внешним базам данныхarrow
      • Запросы сегментацииarrow
      • Добавить запрос сегментацииОбновить запрос сегментацииПолучить информацию о запросе сегментацииПолучить список запросов на сегментациюУдалить запрос сегментации
        Запросы для шаблоновarrow
      • Добавить запрос для шаблоновОбновить запрос для шаблоновПолучить информацию о запросе для шаблоновПолучить список запросов для шаблоновУдалить запрос для шаблонов
      Прочееarrow
    • Загрузить файлПолучить веб-версию сообщенияPush провайдерыДедупликация запросовРабота с API через RabbitMQСписок гендерных идентификацийПолучить допустимые значения полей browsers, devices, tz, oses, languages
    Список API-методовИмпорт и настройка коллекции API-методов в Postman
      SDKarrow
      • mSDKarrow
        • Androidarrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDK
            Настройка провайдеровarrow
          • Firebase Cloud MessagingHuawei Mobile ServicesRuStore
          iOSarrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDK
            Настройка провайдеровarrow
          • Apple Push Notification ServiceFirebase Cloud MessagingHuawei Mobile Services
          React Native (Android/iOS)arrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDKНастройка провайдеров
          Flutter (Android/iOS)arrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDKНастройка провайдеров
        Работа с ролевым и JWT-токеном
      Web Push SDK
  • SDK
  • mSDK
  • Android
  • Публичный API SDK

Публичный API SDK

SDK собран из модулей: обязательного Core и опциональных Push, Target, Profile, In-App. Каждый модуль подключается отдельной зависимостью и открывается через соответствующее свойство объекта AltcraftSDK:

AltcraftSDK          // Core: инициализация, аутентификация, события, очистка
AltcraftSDK.auth // Core: аутентификация пользователя
AltcraftSDK.push // Push: подписки, токены, уведомления
AltcraftSDK.target // Target: отправка целей
AltcraftSDK.profile // Profile: поля профиля
AltcraftSDK.inApp // In-App: кампании и подписки

Core (обязательный модуль)​

object AltcraftSDK
AltcraftSDK
// Инициализация SDK и установка конфигурации
├─ fun initialization(context: Context, configuration: AltcraftConfiguration, complete: ((Result<Unit>) -> Unit)? = null): Unit
// Полная очистка данных SDK (БД, SP, фоновые задачи)
├─ fun clear(context: Context, onComplete: (() -> Unit)? = null): Unit
// Разрешить переинициализацию retry-операций и проверки токена в текущей сессии
├─ fun unlockInitialOperationsInThisSession(): Unit
// Доступ к аутентификации пользователя
├─ val auth: AuthAPI
// Доступ к событиям SDK (один подписчик)
├─ val SDKEvents: Events
// Типы событий Core-модуля
└─ val moduleEvents: CoreEvents
object AuthAPI
AuthAPI
// Установить провайдера JWT-токенов (null — снять)
├─ fun setJWTProvider(provider: JWTInterface?): Unit
// Аутентификация пользователя
├─ fun authenticate(context: Context): Unit
// Выход пользователя (восстановление анонимной сессии)
├─ fun logOut(context: Context): Unit
// Проверка статуса аутентификации
└─ suspend fun isAuthenticated(context: Context): Boolean
object Events
Events
// Подписаться на события SDK (заменяет существующего подписчика)
├─ fun subscribe(newSubscriber: (Event) -> Unit): Unit
// Отписаться от событий SDK
└─ fun unsubscribe(): Unit
object CoreEvents — публичные события Core-модуля
CoreEvents
// Общие события SDK
├─ val configIsSet: SDKEvent // SDK configuration is installed
├─ val sdkCleared: SDKEvent // SDK data has been cleared
├─ val notAuthenticatedError: SDKEvent // User is not authenticated
├─ val userLogOut: SDKEvent // User logged out. Anonymous session started.
├─ val roomMigrationError: SDKEvent // Room database migration failed. The local SDK database will be recreated.
// Успешные API-запросы
├─ val authenticateSuccessful: SDKEvent // successful request: profile/authenticate
// Неудачные API-запросы
└─ val pushStatusRequestFailed: SDKEvent // failed request: push/status
class AltcraftConfiguration
com.altcraft.sdk.config
└─ class AltcraftConfiguration private constructor(...)
// Класс конфигурации Altcraft SDK: URL API, ресурсный токен, сведения о
// приложении, флаг логов и конфигурации опциональных модулей.

├─ val apiUrl: String
├─ val rToken: String?
├─ val appInfo: AppInfo?
└─ val enableLogging: Boolean?

└─ class Builder(
apiUrl: String, // Базовый URL Altcraft API (обязательный)
rToken: String? = null, // Ролевой токен (опционально)
appInfo: AppInfo? = null, // Сведения о приложении (опционально)
enableLogging: Boolean? = null // Включает/отключает ведение логов (опционально)
)
// Добавить конфигурацию опционального модуля (повторный вызов для того
// же модуля заменяет предыдущую конфигурацию)
├─ fun addModuleConfiguration(configuration: ModuleConfiguration): Builder
// Построить валидную конфигурацию
└─ fun build(): AltcraftConfiguration

Push (опциональный модуль)​

object Push
Push
// Доступ к API push-токенов
├─ val token: TokenAPI
// Доступ к событиям push (доставка, открытие)
├─ val pushEvents: EventAPI
// Типы событий Push-модуля
├─ val moduleEvents: ModuleEvents
// Доступ к приёму входящих push-уведомлений
├─ val receiver: PushReceiverApi
// Доступ к подпискам на push-уведомления
├─ val subscription: SubscriptionAPI
// Запрос разрешения на отправку уведомлений (Android 13+)
└─ fun requestNotificationPermission(context: Context, activity: ComponentActivity): Unit
object PushReceiverApi
PushReceiverApi
// Проверить, принадлежит ли push-уведомление Altcraft
├─ fun isAltcraftPush(message: Map<String, String>): Boolean
// Передать входящее push-уведомление в SDK
└─ fun takePush(context: Context, message: Map<String, String>): Unit
open class PushReceiver
PushReceiver
// Обработка входящего push-уведомления.
// Переопределяется для кастомного показа уведомления. SDK ищет реализации
// рефлексией в пакетах, указанных в PushConfiguration.pushReceiverModules;
// при отсутствии находит стандартную реализацию и вызывает pushHandler.
└─ open suspend fun pushHandler(context: Context, message: Map<String, String>): Unit
object TokenAPI
TokenAPI
// Зарегистрировать провайдера FCM (null — снять)
├─ fun setFCMTokenProvider(provider: FCMInterface?): Unit
// Зарегистрировать провайдера HMS (null — снять)
├─ fun setHMSTokenProvider(provider: HMSInterface?): Unit
// Зарегистрировать провайдера RuStore (null — снять)
├─ fun setRuStoreTokenProvider(provider: RustoreInterface?): Unit
// Получить текущий токен устройства
├─ suspend fun getToken(context: Context): TokenData?
// Удалить токен у выбранного провайдера
├─ suspend fun deleteToken(context: Context, provider: String): Unit
// Форс-обновление токена (удалить → обновить)
├─ suspend fun forcedTokenUpdate(context: Context): Unit
// Сохранить токен провайдера вручную
├─ suspend fun setToken(context: Context, provider: String?, token: String?): Unit
// Изменить приоритет провайдеров и обновить токен
└─ suspend fun changeProviderPriority(context: Context, priority: List<String>): Unit
object EventAPI
EventAPI
// Зафиксировать доставку Altcraft-push (вызывает delivery-ивент)
├─ suspend fun deliveryEvent(context: Context, message: Map<String, String>? = null, messageUID: String? = null): Unit
// Зафиксировать открытие Altcraft-push (вызывает open-ивент)
└─ suspend fun openEvent(context: Context, message: Map<String, String>? = null, messageUID: String? = null): Unit
object SubscriptionAPI
SubscriptionAPI
// Статусы push-подписки
├─ val status: StatusAPI
// Подписка на push-уведомление (status = SUBSCRIBED)
├─ fun subscribe(context: Context, sync: Boolean = true, profileFields: Map<String, Any?>? = null, customFields: Map<String, Any?>? = null, cats: List<CategoryData>? = null, replace: Boolean? = null, skipTriggers: Boolean? = null): Unit
// Приостановка подписки на push-уведомления (status = SUSPENDED)
├─ fun suspend(context: Context, sync: Boolean = true, profileFields: Map<String, Any?>? = null, customFields: Map<String, Any?>? = null, cats: List<CategoryData>? = null, replace: Boolean? = null, skipTriggers: Boolean? = null): Unit
// Отписка от push-уведомлений (status = UNSUBSCRIBED)
├─ fun unsubscribe(context: Context, sync: Boolean = true, profileFields: Map<String, Any?>? = null, customFields: Map<String, Any?>? = null, cats: List<CategoryData>? = null, replace: Boolean? = null, skipTriggers: Boolean? = null): Unit
// Смена статуса подписки указанной в JWT с suspended на subscribed, остальные
// подписки, содержащие указанный push-токен, сменят статус с subscribed на suspended
├─ suspend fun unSuspend(context: Context): ResponseWithHttpCode<ResponseWithProfile>?
// Добавить функциональное поле профиля (set/incr/...)
└─ fun actionField(key: String): ActionFieldBuilder
object StatusAPI
StatusAPI
// Статус последней подписки профиля
├─ suspend fun latest(context: Context): ResponseWithHttpCode<ResponseWithProfile>?
// Статус подписки с текущим токеном устройства
├─ suspend fun current(context: Context): ResponseWithHttpCode<ResponseWithProfile>?
// Статус последней подписки профиля по указанному провайдеру push-уведомлений
└─ suspend fun latestForProvider(context: Context, provider: String? = null): ResponseWithHttpCode<ResponseWithProfile>?
class PushConfiguration
com.altcraft.sdk.push.config
└─ class PushConfiguration(
icon: Int? = null, // ID ресурса иконки уведомлений (опционально)
providerPriority: List<String> = emptyList(), // Приоритет провайдеров push-уведомлений (опционально)
pushReceiverModules: List<String> = emptyList(), // Пакеты, где может быть переопределён PushReceiver (опционально)
pushChannelName: String? = null, // Имя канала push-уведомлений (опционально)
pushChannelDescription: String? = null // Описание канала push-уведомлений (опционально)
)
// Расширение для добавления конфигурации Push в главный билдер
└─ fun AltcraftConfiguration.Builder.pushConfig(configuration: PushConfiguration): AltcraftConfiguration.Builder

Target (опциональный модуль)​

object Target
Target
// Типы событий Target-модуля
├─ val moduleEvents: ModuleEvents
// Отправить цель (target-событие) на сервер
└─ fun sendTarget(
context: Context,
sid: String,
eventName: String,
sendMessageId: String? = null,
payload: Map<String, Any?>? = null,
matching: Map<String, Any?>? = null,
matchingType: String? = null,
profileFields: Map<String, Any?>? = null,
subscription: Subscription? = null,
utm: UTM? = null
): Unit

Profile (опциональный модуль)​

object Profile
Profile
// Типы событий Profile-модуля
├─ val moduleEvents: ModuleEvents
// Обновить поля профиля
└─ fun updateProfileFields(context: Context, profileFields: Map<String, Any?>? = null, skipTriggers: Boolean? = null): Unit

In-App (опциональный модуль)​

object InApp
InApp
// Управление подписками на In-App уведомления
├─ val subscription: SubscriptionAPI
// JSON-эмиттер In-App кампаний для внешнего подписчика
├─ val emitter: EmitterAPI
// Типы событий In-App-модуля
├─ val moduleEvents: ModuleEvents
// Настроить анимацию In-App уведомления
├─ fun animation(block: Animator.() -> Unit): Unit
// Установить маркер текущего экрана (используется при фильтрации In-App кампаний)
├─ fun setScreen(context: Context, screen: String): Unit
// Триггер кастомной In-App кампании по имени
├─ fun trigger(context: Context, name: String): Unit
// Запрос доступных In-App placements
└─ fun getPlacements(context: Context): Unit
object SubscriptionAPI (In-App)
SubscriptionAPI
// Подписка на In-App уведомления (status = SUBSCRIBED)
├─ fun subscribe(context: Context, sync: Boolean = true, profileFields: Map<String, Any?>? = null, customFields: Map<String, Any?>? = null, cats: List<CategoryData>? = null, replace: Boolean? = null, skipTriggers: Boolean? = null): Unit
// Отписка от In-App уведомлений (status = UNSUBSCRIBED)
├─ fun unSubscribe(context: Context, sync: Boolean = true, profileFields: Map<String, Any?>? = null, customFields: Map<String, Any?>? = null, cats: List<CategoryData>? = null, replace: Boolean? = null, skipTriggers: Boolean? = null): Unit
// Статус подписки на In-App уведомления
└─ suspend fun getSubscriptionStatus(context: Context): ResponseWithHttpCode<ResponseWithProfile>?
object EmitterAPI
EmitterAPI
// Подписаться на JSON In-App кампаний (заменяет существующего подписчика)
├─ fun subscribe(newSubscriber: (String) -> Unit): Unit
// Отписаться от JSON In-App кампаний
└─ fun unsubscribe(): Unit
interface Animator
Animator
// Идентификатор размещения, к которому относится аниматор
├─ val companyId: Int
// Применить блок к In-App view мгновенно, без запуска анимации
├─ fun prepare(block: View.() -> Unit): Unit
// Настроить и запустить property-анимацию для In-App view
└─ fun animate(block: ViewPropertyAnimator.() -> Unit): Unit
class InAppConfiguration
com.altcraft.sdk.inapp.config
└─ class InAppConfiguration(
inAppAutoRequest: Boolean = true // Автоматический запрос In-App placements (опционально)
)
// Расширение для добавления конфигурации In-App в главный билдер
└─ fun AltcraftConfiguration.Builder.inAppConfig(configuration: InAppConfiguration): AltcraftConfiguration.Builder

Модели данных​

Event Classes
Event
// Базовое событие SDK (универсальная телеметрия)
function: String
event: SDKEvent?
eventMessage: String?
eventValue: Map<String, Any?>?
date: Date
internal: Boolean


Error
// Ошибка SDK, наследует Event
function: String
event: SDKEvent?
eventMessage: String?
eventValue: Map<String, Any?>?
date: Date


RetryError
// Ошибка запроса, для которого предусмотрен автоматический повтор и выполнение
function: String
event: SDKEvent?
eventMessage: String?
eventValue: Map<String, Any?>?
date: Date
Data Classes (Core)
// Опциональные данные для Firebase Analytics (если используется)
data class AppInfo(
appID: String = "",
appIID: String = "",
appVer: String = ""
)


// Обёртка ответа API вместе с HTTP-кодом
data class ResponseWithHttpCode<T : ResponseData>(
httpCode: Int?,
response: T?
)


// Ответ запроса (реализация BaseResponseData)
data class ResponseWithProfile(
error: Int? = null,
@SerialName("error_text") errorText: String? = null,
profile: ProfileData? = null
)


// Данные профиля пользователя
data class ProfileData(
id: String? = null,
status: String? = null,
acid: String? = null,
@SerialName("is_test") isTest: Boolean? = null,
subscription: SubscriptionData? = null
)


// Текущая подписка профиля
data class SubscriptionData(
@SerialName("subscription_id") subscriptionId: String? = null,
@SerialName("hash_id") hashId: String? = null,
provider: String? = null,
status: String? = null,
fields: Map<String, JsonElement>? = null,
cats: List<CategoryData>? = null
)


// Категория подписки (имя, заголовок, флаги)
data class CategoryData(
name: String?,
title: String? = null,
steady: Boolean? = null,
active: Boolean?
)
Data Classes (Push)
// Токен push-провайдера устройства
data class TokenData(
provider: String,
token: String
)
Data Classes (Target)
com.altcraft.sdk.target.data.models.TargetModels

// Контейнер UTM-параметров для атрибуции целей (все поля опциональны)
data class UTM(
campaign: String? = null,
content: String? = null,
keyword: String? = null,
medium: String? = null,
source: String? = null,
temp: String? = null
)


object SubscriptionModel {
// Базовый интерфейс всех типов подписок, добавляемых целью
sealed interface Subscription {
@SerialName("resource_id")
val resourceId: Int
val status: String?
val priority: Int?
@SerialName("custom_fields")
val customFields: Map<String, @Contextual Any?>?
val cats: List<String>?
val channel: String
}

// Подписка на канал Email
data class EmailSubscription(
@SerialName("resource_id") override val resourceId: Int,
val email: String,
override val status: String? = null,
override val priority: Int? = null,
@SerialName("custom_fields") override val customFields: Map<String, @Contextual Any?>? = null,
override val cats: List<String>? = null,
) : Subscription {
@SerialName("channel")
override val channel: String = "email"
}

// Подписка на канал SMS
data class SmsSubscription(
@SerialName("resource_id") override val resourceId: Int,
val phone: String,
override val status: String? = null,
override val priority: Int? = null,
@SerialName("custom_fields") override val customFields: Map<String, @Contextual Any?>? = null,
override val cats: List<String>? = null,
) : Subscription {
@SerialName("channel")
override val channel: String = "sms"
}

// Подписка на push-канал
data class PushSubscription(
@SerialName("resource_id") override val resourceId: Int,
val provider: String,
@SerialName("subscription_id") val subscriptionId: String,
override val status: String? = null,
override val priority: Int? = null,
@SerialName("custom_fields") override val customFields: Map<String, @Contextual Any?>? = null,
override val cats: List<String>? = null,
) : Subscription {
@SerialName("channel")
override val channel: String = "push"
}

// Подписка с cc_data (Telegram, WhatsApp, Viber, Notify)
data class CcDataSubscription(
@SerialName("resource_id") override val resourceId: Int,
@SerialName("channel") override val channel: String,
@SerialName("cc_data") val ccData: JsonObject,
override val status: String? = null,
override val priority: Int? = null,
@SerialName("custom_fields") override val customFields: Map<String, @Contextual Any?>? = null,
override val cats: List<String>? = null,
) : Subscription
}
Constants
com.altcraft.sdk.push.data
└─ object Constants
// Провайдеры push-уведомлений
├─ const val FCM_PROVIDER: String = "android-firebase"
├─ const val HMS_PROVIDER: String = "android-huawei"
└─ const val RUS_PROVIDER: String = "android-rustore"
Interfaces

JWTInterface (Core):

JWTInterface
// Доступ к текущему JWT
└─ fun getJWT(): String?
// Возвращает JWT или null

FCMInterface (Push):

FCMInterface
// Контракт операций с FCM-токеном
├─ suspend fun getToken(): String?
│ // Возвращает токен FCM или null
└─ fun deleteToken(completion: (Boolean) -> Unit)
// Удаляет токен FCM

HMSInterface (Push):

HMSInterface
// Контракт операций с HMS-токеном
├─ suspend fun getToken(context: Context): String?
│ // Возвращает токен HMS или null
└─ fun deleteToken(context: Context, complete: (Boolean) -> Unit)
// Удаляет токен HMS

RuStoreInterface (Push):

RustoreInterface
// Контракт операций с RuStore-токеном
├─ suspend fun getToken(): String?
│ // Возвращает токен RuStore или null
└─ fun deleteToken(complete: (Boolean) -> Unit)
// Удаляет токен RuStore

Subscription (Target):

Subscription (sealed interface)
// Базовый контракт модели подписки для всех каналов
├─ val resourceId: Int
│ // Обязательный ID ресурса Altcraft (JSON: "resource_id")
├─ val status: String?
│ // Необязательный статус подписки
├─ val priority: Int?
│ // Необязательный приоритет
├─ val customFields: Map<String, @Contextual Any?>?
│ // Необязательные стандартные и кастомные поля (JSON: "custom_fields")
├─ val cats: List<String>?
│ // Необязательные категории подписки
└─ val channel: String
// Обязательный тип канала (например, "email", "sms", "push", "telegram_bot", ...)
Последнее обновление 28 сент. 2026 г.
Предыдущая страница
Функционал SDK
Следующая страница
Настройка провайдеров
  • Core (обязательный модуль)
  • Push (опциональный модуль)
  • Target (опциональный модуль)
  • Profile (опциональный модуль)
  • In-App (опциональный модуль)
  • Модели данных
© 2015 - 2026 Altcraft. Все права защищены.