Skip to main content
Altcraft Docs LogoAltcraft Docs Logo
User guideDeveloper guideAdmin guide
Company siteHelp center
English
  • Русский
  • English
v75
Login
  • User API documentation
  • API interaction
  • Matching
  • Profiles
  • Databases
  • Resources
  • Segments
  • Suppression lists
  • Templates and fragments
  • Campaigns
  • Mailings
  • Automation scenarios
  • Loyalty Programs
  • Promo codes
  • Goals
  • Application push notifications
  • Market
  • Analytic reports
  • SendersDev
  • External datatables queries
  • Objects
  • Miscellaneous
  • Importing the API collection in Postman
  • List of API endpoints
  • SDK
    • mSDK
      • Android
        • Quick Start
        • SDK Functionality
        • SDK Configuration
        • Public SDK API
        • Provider configuration android
      • iOS
      • React Native (Android/iOS)
      • Managing JWT and Role Token
  • SDK
  • mSDK
  • Android
  • Public SDK API
Documentation for version v75

Public SDK API

object AltcraftSDK
AltcraftSDK
// SDK initialization and configuration setup
├─ fun initialization(context: Context, configuration: AltcraftConfiguration, complete: ((Result<Unit>) -> Unit)? = null): Unit
// Full cleanup of SDK data (DB, SP, background tasks)
├─ fun clear(context: Context, onComplete: (() -> Unit)? = null): Unit
// Register a JWT provider
├─ fun setJWTProvider(provider: JWTInterface?): Unit
// Allow push-module reinitialization in the current session
├─ fun unlockInitialOperationsInThisSession(): Unit
// Base Altcraft push receiver (can be overridden)
├─ open class PushReceiver
│ // Handle incoming push message
│ ├─ open fun pushHandler(context: Context, message: Map<String, String>): Unit
│ // Entry point for delivering push messages to the SDK
│ └─ companion object
│ └─ fun takePush(context: Context, message: Map<String, String>): Unit
// Public subscription functions
├─ val pushSubscriptionFunctions: PublicPushSubscriptionFunctions
│ // Subscribe to push notifications (status = SUBSCRIBED)
│ ├─ fun pushSubscribe(
│ │ context: Context,
│ │ sync: Boolean = true,
│ │ profileFields: Map<String, Any?>? = null,
│ │ customFields: Map<String, Any?>? = null,
│ │ cats: List<DataClasses.CategoryData>? = null,
│ │ replace: Boolean? = null,
│ │ skipTriggers: Boolean? = null
│ │ ): Unit
│ // Suspend push notifications (status = SUSPENDED)
│ ├─ fun pushSuspend(...): Unit
│ // Unsubscribe from push notifications (status = UNSUBSCRIBED)
│ ├─ fun pushUnSubscribe(...): Unit
│ // Change subscription from suspended to subscribed for the one in JWT; others with this token switch to suspended
│ ├─ suspend fun unSuspendPushSubscription(context: Context): DataClasses.ResponseWithHttpCode?
│ // Status of the latest profile subscription
│ ├─ suspend fun getStatusOfLatestSubscription(context: Context): DataClasses.ResponseWithHttpCode?
│ // Status of latest subscription for a specific push provider
│ ├─ suspend fun getStatusOfLatestSubscriptionForProvider(context: Context, provider: String? = null): DataClasses.ResponseWithHttpCode?
│ // Status of subscription with current device token
│ ├─ suspend fun getStatusForCurrentSubscription(context: Context): DataClasses.ResponseWithHttpCode?
│ // Functional profile field (set/incr/…)
│ └─ fun actionField(key: String): ActionFieldBuilder
// Token management functions
├─ val pushTokenFunctions: PublicPushTokenFunctions
│ // Manually save provider token (onNewToken)
│ ├─ fun setPushToken(context: Context, provider: String, token: String): Unit
│ // Get current device push token
│ ├─ suspend fun getPushToken(context: Context): DataClasses.TokenData?
│ // Register FCM provider
│ ├─ fun setFCMTokenProvider(provider: FCMInterface?): Unit
│ // Register HMS provider
│ ├─ fun setHMSTokenProvider(provider: HMSInterface?): Unit
│ // Register RuStore provider
│ ├─ fun setRuStoreTokenProvider(provider: RustoreInterface?): Unit
│ // Delete provider device token
│ ├─ suspend fun deleteDeviceToken(context: Context, provider: String, complete: () -> Unit): Unit
│ // Forced token update (delete → refresh)
│ ├─ fun forcedTokenUpdate(context: Context, complete: () -> Unit): Unit
│ // Change provider priority list and update token
│ └─ suspend fun changePushProviderPriorityList(context: Context, priorityList: List<String>): Unit
// Push event tracking functions
├─ val pushEventFunction: PublicPushEventFunctions
│ // Track delivery (delivery event)
│ ├─ fun deliveryEvent(context: Context, message: Map<String, String>? = null, uid: String? = null): Unit
│ // Track open (open event)
│ └─ fun openEvent(context: Context, message: Map<String, String>? = null, uid: String? = null): Unit
// SDK events (single subscriber)
└─ val eventSDKFunctions: Events
├─ fun subscribe(newSubscriber: (DataClasses.Event) -> Unit): Unit
└─ fun unsubscribe(): Unit

class AltcraftConfiguration
com.altcraft.sdk.config
└─ class AltcraftConfiguration private constructor(...)
// SDK configuration class:
// API URL, rToken, app info, foreground service flag,
// push channel settings, receiver modules, provider priority.

├─ class Builder(
│ apiUrl: String,
│ icon: Int? = null,
│ rToken: String? = null,
│ usingService: Boolean = false,
│ serviceMessage: String? = null,
│ appInfo: DataClasses.AppInfo? = null,
| enableLogging: Boolean = false,
│ providerPriorityList: List<String>? = null,
│ pushReceiverModules: List<String>? = null,
│ pushChannelName: String? = null,
│ pushChannelDescription: String? = null
│ )
│ └─ fun build(): AltcraftConfiguration
│
├─ fun getApiUrl(): String
├─ fun getIcon(): Int?
├─ fun getRToken(): String?
├─ fun getUsingService(): Boolean
├─ fun getServiceMessage(): String?
├─ fun getAppInfo(): DataClasses.AppInfo?
├─ fun getEnableLogging(): Boolean
├─ fun getProviderPriorityList(): List<String>?
├─ fun getPushReceiverModules(): List<String>?
├─ fun getPushChannelName(): String?
└─ fun getPushChannelDescription(): String?

Event Classes
Event
function: String
eventCode: Int?
eventMessage: String?
eventValue: Map<String, Any?>?
date: Date

Error
function: String
eventCode: Int?
eventMessage: String?
eventValue: Map<String, Any?>?
date: Date

RetryError
function: String
eventCode: Int?
eventMessage: String?
eventValue: Map<String, Any?>?
date: Date

Data Classes
data class TokenData(
provider: String,
token: String
)

data class AppInfo(
appID: String,
appIID: String,
appVer: String
)
asMap(): Map<String, String>

data class ResponseWithHttpCode(
httpCode: Int?,
response: Response?
)

data class Response(
error: Int? = null,
@SerialName("error_text") errorText: String? = null,
profile: ProfileData? = null
)

data class ProfileData(
id: String? = null,
status: 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 class EmailSubscription(...)

data class SmsSubscription(...)

data class PushSubscription(...)

data class CcDataSubscription(...)

data class UTM(
mailing: String? = null,
content: String? = null,
keyword: String? = null,
medium: String? = null,
source: String? = null,
temp: String? = null
)

Interfaces

JWTInterface​

fun getJWT(): String?

FCMInterface​

suspend fun getToken(): String?
suspend fun deleteToken(completion: (Boolean) -> Unit)

HMSInterface​

suspend fun getToken(context: Context): String?
suspend fun deleteToken(context: Context, complete: (Boolean) -> Unit)

RuStoreInterface​

suspend fun getToken(): String?
suspend fun deleteToken(complete: (Boolean) -> Unit)

Subscription (sealed interface)​

val resourceId: Int
val status: String?
val priority: Int?
val customFields: Map<String, Any?>?
val cats: List<String>?
val channel: String
Last updated on Nov 14, 2024
Previous
SDK Configuration
Next
Provider configuration android
  • JWTInterface
  • FCMInterface
  • HMSInterface
  • RuStoreInterface
  • Subscription (sealed interface)
© 2015 - 2025 Altcraft, LLC. All rights reserved.