---
title: sdk (1 of 5)
slug: sdk/android-sdk-api-reference-sdk-1-of-5
createdAt: 2026-11-04T11:40:02.033Z
---

# no.kindly.chatsdk.chat.sdk.common.delegate

## BoolPreference

`class`

```kotlin
class BoolPreference(preferences: SharedPreferences, key: String, defaultValue: Boolean) : ReadWriteProperty<Any, Boolean>
```

| Member           | Declaration                                                                                 | Description |
| ---------------- | ------------------------------------------------------------------------------------------- | ----------- |
| `BoolPreference` | `constructor(preferences: SharedPreferences, key: String, defaultValue: Boolean)`           |             |
| `getValue`       | `open operator override fun getValue(thisRef: Any, property: KProperty<*>): Boolean`        |             |
| `setValue`       | `open operator override fun setValue(thisRef: Any, property: KProperty<*>, value: Boolean)` |             |

## LongPreference

`class`

```kotlin
class LongPreference(preferences: SharedPreferences, key: String?, defaultValue: Long = 0) : ReadWriteProperty<Any, Long>
```

| Member           | Declaration                                                                              | Description |
| ---------------- | ---------------------------------------------------------------------------------------- | ----------- |
| `LongPreference` | `constructor(preferences: SharedPreferences, key: String?, defaultValue: Long = 0)`      |             |
| `getValue`       | `open operator override fun getValue(thisRef: Any, property: KProperty<*>): Long`        |             |
| `setValue`       | `open operator override fun setValue(thisRef: Any, property: KProperty<*>, value: Long)` |             |

## StringPreference

`class`

```kotlin
class StringPreference(preferences: SharedPreferences, key: String?, defaultValue: String = "") : ReadWriteProperty<Any, String>
```

| Member             | Declaration                                                                                | Description |
| ------------------ | ------------------------------------------------------------------------------------------ | ----------- |
| `StringPreference` | `constructor(preferences: SharedPreferences, key: String?, defaultValue: String = "")`     |             |
| `getValue`         | `open operator override fun getValue(thisRef: Any, property: KProperty<*>): String`        |             |
| `setValue`         | `open operator override fun setValue(thisRef: Any, property: KProperty<*>, value: String)` |             |

# no.kindly.chatsdk.chat.sdk.data.api

## AuthGeneratorActor

`interface`

```kotlin
interface AuthGeneratorActor
```

| Member                      | Declaration                                                                                                                                            | Description |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- |
| `authenticateWithAuthToken` | `abstract suspend fun authenticateWithAuthToken(forceNew: Boolean? = null, reason: AuthTokenRequest.Reason = AuthTokenRequest.Reason.INITIAL_CONNECT)` |             |
| `deleteAuthToken`           | `abstract fun deleteAuthToken()`                                                                                                                       |             |
| `getAuthToken`              | `abstract suspend fun getAuthToken(forceNew: Boolean = true, reason: AuthTokenRequest.Reason = AuthTokenRequest.Reason.INITIAL_CONNECT): String?`      |             |
| `isAboutToExpire`           | `abstract fun isAboutToExpire(): Boolean?`                                                                                                             |             |
| `isAboutToExpire`           | `abstract fun isAboutToExpire(token: String): Boolean?`                                                                                                |             |
| `refreshAuthToken`          | `abstract suspend fun refreshAuthToken(reason: AuthTokenRequest.Reason = AuthTokenRequest.Reason.INITIAL_CONNECT): String?`                            |             |
| `saveAuthToken`             | `abstract fun saveAuthToken(token: String)`                                                                                                            |             |

# no.kindly.chatsdk.chat.sdk.data.api.interceptors

## LoggingInterceptor

`class`

```kotlin
class LoggingInterceptor : Interceptor
```

OkHttp interceptor that logs each HTTP request/response in a multi-section block matching the iOS HTTPClient format exactly:

```kotlin
------- 🟢 /path ------- [Success]
--- Request
[METHOD] url
--- Headers
"key": "value", ...
--- Body
{ pretty-printed request body or n/a }
--- Response [200]
{ pretty-printed response body }
```

Or on failure (HTTP 4xx/5xx or network exception):

```kotlin
------- 🔴 /path ------- [Failure]
--- Request
--- Headers
--- Body
--- Error
<exception or status code>
```

**Visibility**: emits at `LogLevelEnum.DEBUG` for success, `ERROR` for failure. In customer production builds (cloud + verboseLogging off + forceVerboseLogs off), DEBUG is filtered out — only failed requests reach device logs. The full payload becomes visible when `_setVerboseLogs(true)` SPI is called or the local-build `WHERE_AM_I = LOCAL` flag is set, matching the iOS HTTPClient gating model.

| Member               | Declaration                                                       | Description |
| -------------------- | ----------------------------------------------------------------- | ----------- |
| `LoggingInterceptor` | `constructor()`                                                   |             |
| `intercept`          | `open override fun intercept(chain: Interceptor.Chain): Response` |             |

# no.kindly.chatsdk.chat.sdk.data.core

## ActionId

`typealias`

```kotlin
typealias ActionId = UUID
```

## ActionType

`typealias`

```kotlin
typealias ActionType = suspend () -> ActionTypeResponse
```

## ActionTypeResponse

`typealias`

```kotlin
typealias ActionTypeResponse = CompletableDeferred<Unit>?
```

## AuthState

`enum`

```kotlin
enum AuthState : Enum<AuthState>
```

| Member                  | Declaration                             | Description                                                                                                                                                                                                                                                                                                                |
| ----------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `NONE`                  | `NONE`                                  |                                                                                                                                                                                                                                                                                                                            |
| `AUTHENTICATED`         | `AUTHENTICATED`                         |                                                                                                                                                                                                                                                                                                                            |
| `AUTHENTICATION_FAILED` | `AUTHENTICATION_FAILED`                 |                                                                                                                                                                                                                                                                                                                            |
| `entries`               | `val entries: EnumEntries<AuthState>`   | Returns a representation of an immutable list of all enum entries, in the order they're declared. This method may be used to iterate over the enum entries.                                                                                                                                                                |
| `valueOf`               | `fun valueOf(value: String): AuthState` | Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.) **Throws** - `kotlin.IllegalArgumentException`: if this enum type has no constant with the specified name |
| `values`                | `fun values(): Array<AuthState>`        | Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants.                                                                                                                                                                         |

## getErrorMessage

`function`

```kotlin
fun ResponseBody.getErrorMessage(): String
```

## getSerializable

`function`

```kotlin
fun <T : Serializable?> Intent.getSerializable(key: String, m_class: Class<T>): T
```

## gone

`function`

```kotlin
fun View.gone()
```

## goto

`function`

```kotlin
fun <T> Activity.goto(clazz: Class<T>, clearStack: Boolean = false)
```

## Intent

`function`

```kotlin
fun <T> Activity.Intent(clazz: Class<T>): Intent
```

## invisible

`function`

```kotlin
fun View.invisible()
```

## KindlySDKError

`sealed class`

```kotlin
sealed class KindlySDKError : Exception
```

## KindlySDKError.ApiError

`data class`

```kotlin
data class ApiError(val code: Int, val errorMessage: String?) : KindlySDKError
```

| Member         | Declaration                                     | Description |
| -------------- | ----------------------------------------------- | ----------- |
| `ApiError`     | `constructor(code: Int, errorMessage: String?)` |             |
| `code`         | `val code: Int`                                 |             |
| `errorMessage` | `val errorMessage: String?`                     |             |

## KindlySDKError.ChatNotConnected

`object`

```kotlin
object ChatNotConnected : KindlySDKError
```

## KindlySDKError.InvalidData

`object`

```kotlin
object InvalidData : KindlySDKError
```

## KindlySDKError.SDKNotInitialized

`object`

```kotlin
object SDKNotInitialized : KindlySDKError
```

## KindlySDKError.TokenMissing

`object`

```kotlin
object TokenMissing : KindlySDKError
```

## LifecycleVars

`class`

```kotlin
class LifecycleVars
```

| Member          | Declaration     | Description |
| --------------- | --------------- | ----------- |
| `LifecycleVars` | `constructor()` |             |

## LifecycleVars.Companion

`object`

```kotlin
object Companion
```

| Member                            | Declaration                                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| --------------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `botFeedbackFormShowCount`        | `var botFeedbackFormShowCount: Int`                                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `botFeedbackId`                   | `var botFeedbackId: String?`                                         |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `chatActivityInstances`           | `val chatActivityInstances: AtomicInteger`                           | Live ChatSDKActivity instances. Shared state is reset only when the last one is destroyed (they can stack).                                                                                                                                                                                                                                                                                                                                                                                                              |
| `chatWasEnded`                    | `var chatWasEnded: Boolean`                                          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `handoverFeedbackFormShowCount`   | `var handoverFeedbackFormShowCount: Int`                             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `handoverFeedbackId`              | `var handoverFeedbackId: String?`                                    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `hasAcceptedCompliance`           | `var hasAcceptedCompliance: Boolean`                                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `hasGreetingParams`               | `val hasGreetingParams: Boolean`                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `hasRequestedHandoverAtLeastOnce` | `var hasRequestedHandoverAtLeastOnce: Boolean`                       | Latches the moment the end user enters the handover funnel - a handover request, or an agent taking over - and stays latched for the rest of the chat, including after the handover ends. This is what gates bot feedback, mirroring `agent.hasRequestedHandoverAtLeastOnce` in the web widget. Do not substitute `handoverFeedbackFormShowCount`: that counts whether the handover *form was displayed*, which is a later and sometimes unreachable moment, and Session zeroes it again whenever a new handover starts. |
| `hasShownComplianceBanner`        | `var hasShownComplianceBanner: Boolean`                              |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `hasShownWelcomePage`             | `var hasShownWelcomePage: Boolean`                                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `includeGreetings`                | `var includeGreetings: Boolean?`                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `isAppInBackground`               | `@Volatile var isAppInBackground: Boolean`                           | Tracks whether the host app is currently backgrounded. Updated by AppStateObserver. Read from the FCM thread.                                                                                                                                                                                                                                                                                                                                                                                                            |
| `isCancellationInProgress`        | `val isCancellationInProgress: AtomicBoolean`                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `isChatActivityVisible`           | `@Volatile var isChatActivityVisible: Boolean`                       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `kindlyContext`                   | `var kindlyContext: Map<String, String>?`                            |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `kindlyInterface`                 | `var kindlyInterface: KindlySDKInteraction?`                         |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `lastBackgroundDateMs`            | `var lastBackgroundDateMs: Long?`                                    | Timestamp of the last `onStop` event (epoch millis). Updated by AppStateObserver. Used to recognize background-induced network failures even when OkHttp reports them slightly after the app has come back to foreground.                                                                                                                                                                                                                                                                                                |
| `mainActivity`                    | `var mainActivity: ChatSDKActivity?`                                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `maintenanceAlertDismissed`       | `var maintenanceAlertDismissed: Boolean`                             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `maintenanceModeEnabled`          | `val maintenanceModeEnabled: Boolean?`                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `pendingConnectRequest`           | `var pendingConnectRequest: () -> Unit?`                             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `settingsOverrides`               | `var settingsOverrides: Map<String, Any>?`                           | Testing overrides for settings response. Set via `KindlySDK._overrideSettings()`.                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `settingsResponse`                | `var settingsResponse: SettingsResponse?`                            |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `shouldGreet`                     | `var shouldGreet: Boolean?`                                          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `triggerDialogueId`               | `var triggerDialogueId: String?`                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `clear`                           | `fun clear()`                                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `clearFeedbackIds`                | `fun clearFeedbackIds(triggerType: TriggerTypeSDK? = null)`          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `observeMaintenanceAlert`         | `fun observeMaintenanceAlert(): Flow<MaintenanceAlertSDK?>`          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `resetGreetings`                  | `fun resetGreetings()`                                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `updateMaintenanceAlert`          | `fun updateMaintenanceAlert(maintenanceAlert: MaintenanceAlertSDK?)` |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `wasBackgroundedRecently`         | `fun wasBackgroundedRecently(withinMs: Long): Boolean`               | Returns `true` if the app is currently in background, or was in background within the last `withinMs` milliseconds. Android tears down active TCP sockets aggressively on background, so a recent background event is a strong signal that an HTTP failure is background-induced (server may have still received the request) rather than a genuine network failure.                                                                                                                                                     |

## LocationEnum

`enum`

```kotlin
enum LocationEnum : Enum<LocationEnum>
```

Location enum - matches iOS WHERE\_AM\_I Controls logging verbosity independent of build variant

| Member         | Declaration                                | Description                                                                                                                                                                                                                                                                                                                |
| -------------- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `LOCAL`        | `LOCAL`                                    |                                                                                                                                                                                                                                                                                                                            |
| `CLOUD`        | `CLOUD`                                    |                                                                                                                                                                                                                                                                                                                            |
| `computedName` | `val computedName: String`                 |                                                                                                                                                                                                                                                                                                                            |
| `entries`      | `val entries: EnumEntries<LocationEnum>`   | Returns a representation of an immutable list of all enum entries, in the order they're declared. This method may be used to iterate over the enum entries.                                                                                                                                                                |
| `locationName` | `val locationName: String`                 |                                                                                                                                                                                                                                                                                                                            |
| `valueOf`      | `fun valueOf(value: String): LocationEnum` | Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.) **Throws** - `kotlin.IllegalArgumentException`: if this enum type has no constant with the specified name |
| `values`       | `fun values(): Array<LocationEnum>`        | Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants.                                                                                                                                                                         |

## Navigation

`object`

```kotlin
object Navigation
```

| Member                   | Declaration                                                                                                                                                             | Description |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `context`                | `var context: Context?`                                                                                                                                                 |             |
| `currentTriggerType`     | `var currentTriggerType: TriggerTypeSDK?`                                                                                                                               |             |
| `feedbackOnCancel`       | `var feedbackOnCancel: () -> Unit?`                                                                                                                                     |             |
| `feedbackOnSubmit`       | `var feedbackOnSubmit: (FeedbackStep, EmojiSelection?, ButtonSelection?, String?) -> Unit?`                                                                             |             |
| `navController`          | `lateinit var navController: NavHostController`                                                                                                                         |             |
| `navigationBarPadding`   | `var navigationBarPadding: MutableState<Dp>`                                                                                                                            |             |
| `showFeedbackSheet`      | `var showFeedbackSheet: MutableState<Boolean>`                                                                                                                          |             |
| `displayChat`            | `fun displayChat(context: Context)`                                                                                                                                     |             |
| `displayDownloadPreview` | `fun displayDownloadPreview(url: String, format: String)`                                                                                                               |             |
| `displayWebView`         | `fun displayWebView(urlStr: String)`                                                                                                                                    |             |
| `setup`                  | `@Composable fun setup(navController: NavHostController, navigationBarPadding: Dp = androidx.compose.ui.unit .Dp(0f))`                                                  |             |
| `showFeedbackForm`       | `fun showFeedbackForm(triggerType: TriggerTypeSDK, onCancel: () -> Unit? = null, onSubmit: (FeedbackStep, EmojiSelection?, ButtonSelection?, String?) -> Unit? = null)` |             |

## PromiseException

`sealed class`

```kotlin
sealed class PromiseException : Exception
```

Errors that can be thrown by the Promise machinery itself (separate from user errors surfaced via `reject(_:)`).

## PromiseException.Cancelled

`data object`

```kotlin
data object Cancelled : PromiseException
```

Thrown by `await()` when the Promise was cancelled via `.cancel()` before resolving.

## PromiseException.NoResult

`data object`

```kotlin
data object NoResult : PromiseException
```

Returned by `await()` when the promise resolves with a null/missing result.

## PromiseException.PromiseFailed

`data object`

```kotlin
data object PromiseFailed : PromiseException
```

Generic resolution failure used as a fallback when neither a value nor an error is present.

## PromiseException.TimedOut

`data object`

```kotlin
data object TimedOut : PromiseException
```

`await()` did not receive a result before its timeout (when a timeout is configured).

## PromiseException.ValidationFailure

`data object`

```kotlin
data object ValidationFailure : PromiseException
```

A validation step inside a chained operation failed.

## SdkMode

`enum`

```kotlin
enum SdkMode : Enum<SdkMode>
```

| Member         | Declaration                           | Description                                                                                                                                                                                                                                                                                                                |
| -------------- | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DEV`          | `DEV`                                 |                                                                                                                                                                                                                                                                                                                            |
| `CLIENT`       | `CLIENT`                              |                                                                                                                                                                                                                                                                                                                            |
| `computedName` | `val computedName: String`            |                                                                                                                                                                                                                                                                                                                            |
| `entries`      | `val entries: EnumEntries<SdkMode>`   | Returns a representation of an immutable list of all enum entries, in the order they're declared. This method may be used to iterate over the enum entries.                                                                                                                                                                |
| `modeName`     | `val modeName: String`                |                                                                                                                                                                                                                                                                                                                            |
| `valueOf`      | `fun valueOf(value: String): SdkMode` | Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.) **Throws** - `kotlin.IllegalArgumentException`: if this enum type has no constant with the specified name |
| `values`       | `fun values(): Array<SdkMode>`        | Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants.                                                                                                                                                                         |

## text

`function`

```kotlin
fun EditText.text(): String
```

## toPx

`property`

```kotlin
val Number.toPx: Int
```

## visible

`function`

```kotlin
fun View.visible()
```

# no.kindly.chatsdk.chat.sdk.data.entity

## BotModel

`data class`

```kotlin
@Serializable
data class BotModel(val id: String = "", val name: String = "", val avatarURL: String? = null, val shouldDisplayTypingIndicator: Boolean = true)
```

Model representing a bot's information. Matches the iOS Bot model structure.

| Member                         | Declaration                                                                                                                | Description |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `BotModel`                     | `constructor(id: String = "", name: String = "", avatarURL: String? = null, shouldDisplayTypingIndicator: Boolean = true)` |             |
| `avatarURL`                    | `val avatarURL: String?`                                                                                                   |             |
| `id`                           | `val id: String`                                                                                                           |             |
| `name`                         | `val name: String`                                                                                                         |             |
| `shouldDisplayTypingIndicator` | `val shouldDisplayTypingIndicator: Boolean`                                                                                |             |

## BotPlaceholder

`data class`

```kotlin
@Serializable
data class BotPlaceholder(val en: String?, val nb: String?, val nn: String?, val sv: String?)
```

| Member           | Declaration                                                       | Description |
| ---------------- | ----------------------------------------------------------------- | ----------- |
| `BotPlaceholder` | `constructor(en: String?, nb: String?, nn: String?, sv: String?)` |             |
| `en`             | `@SerialName(value = "en") val en: String?`                       |             |
| `nb`             | `@SerialName(value = "nb") val nb: String?`                       |             |
| `nn`             | `@SerialName(value = "nn") val nn: String?`                       |             |
| `sv`             | `@SerialName(value = "sv") val sv: String?`                       |             |

## ButtonAction

`data class`

```kotlin
@Serializable
data class ButtonAction(val button: ButtonDataSDK, val chatMessage: MessageData, val temporaryId: String? = null, val version: String = "2.36.1", val newContext: Map<String, String>? = LifecycleVars.kindlyContext)
```

| Member         | Declaration                                                                                                                                                                             | Description |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `ButtonAction` | `constructor(button: ButtonDataSDK, chatMessage: MessageData, temporaryId: String? = null, version: String = "2.36.1", newContext: Map<String, String>? = LifecycleVars.kindlyContext)` |             |
| `button`       | `val button: ButtonDataSDK`                                                                                                                                                             |             |
| `chatMessage`  | `val chatMessage: MessageData`                                                                                                                                                          |             |
| `newContext`   | `@SerialName(value = "new_context") val newContext: Map<String, String>?`                                                                                                               |             |
| `temporaryId`  | `val temporaryId: String?`                                                                                                                                                              |             |
| `version`      | `val version: String`                                                                                                                                                                   |             |

## ButtonDataSDK

`data class`

```kotlin
@Serializable
data class ButtonDataSDK(val id: String?, val buttonType: String?, val languageCode: String?, val label: String = "", val value: String?, val index: Int?, val createdAt: String?, val updatedAt: String?, val isActive: Boolean = true, val hideOutsideBusinessHours: Boolean?, val context: Map<String, Any>? = null, val sliderDetails: SliderDetails? = null, val contactDetails: ContactDetails? = null, val emailDetails: EmailDetails? = null)
```

| Member                     | Declaration                                                                                                                                                                                                                                                                                                                                                                        | Description                                                                                                 |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `ButtonDataSDK`            | `constructor(id: String?, buttonType: String?, languageCode: String?, label: String = "", value: String?, index: Int?, createdAt: String?, updatedAt: String?, isActive: Boolean = true, hideOutsideBusinessHours: Boolean?, context: Map<String, Any>? = null, sliderDetails: SliderDetails? = null, contactDetails: ContactDetails? = null, emailDetails: EmailDetails? = null)` |                                                                                                             |
| `accessibilityId`          | `val accessibilityId: String`                                                                                                                                                                                                                                                                                                                                                      | Generates a unique accessibility identifier for Appium automation Format: suggestion\_button\_`id`\_`label` |
| `buttonType`               | `@SerialName(value = "button_type") val buttonType: String?`                                                                                                                                                                                                                                                                                                                       |                                                                                                             |
| `contactDetails`           | `@SerialName(value = "contact_details") val contactDetails: ContactDetails?`                                                                                                                                                                                                                                                                                                       |                                                                                                             |
| `context`                  | `@SerialName(value = "context") val context: Map<String, Any>?`                                                                                                                                                                                                                                                                                                                    |                                                                                                             |
| `createdAt`                | `@SerialName(value = "created_at") val createdAt: String?`                                                                                                                                                                                                                                                                                                                         |                                                                                                             |
| `emailDetails`             | `@SerialName(value = "email_details") val emailDetails: EmailDetails?`                                                                                                                                                                                                                                                                                                             |                                                                                                             |
| `hideOutsideBusinessHours` | `@SerialName(value = "hide_outside_business_hours") val hideOutsideBusinessHours: Boolean?`                                                                                                                                                                                                                                                                                        |                                                                                                             |
| `id`                       | `@SerialName(value = "id") val id: String?`                                                                                                                                                                                                                                                                                                                                        |                                                                                                             |
| `index`                    | `@SerialName(value = "index") val index: Int?`                                                                                                                                                                                                                                                                                                                                     |                                                                                                             |
| `isActive`                 | `@SerialName(value = "is_active") val isActive: Boolean`                                                                                                                                                                                                                                                                                                                           |                                                                                                             |
| `label`                    | `@SerialName(value = "label") val label: String`                                                                                                                                                                                                                                                                                                                                   |                                                                                                             |
| `languageCode`             | `@SerialName(value = "language_code") val languageCode: String?`                                                                                                                                                                                                                                                                                                                   |                                                                                                             |
| `sliderDetails`            | `@SerialName(value = "slider_details") val sliderDetails: SliderDetails?`                                                                                                                                                                                                                                                                                                          |                                                                                                             |
| `updatedAt`                | `@SerialName(value = "updated_at") val updatedAt: String?`                                                                                                                                                                                                                                                                                                                         |                                                                                                             |
| `value`                    | `@SerialName(value = "value") val value: String?`                                                                                                                                                                                                                                                                                                                                  |                                                                                                             |

## ChatMessageReferenceModel

`data class`

```kotlin
@Serializable
data class ChatMessageReferenceModel(val url: String, val offset: Int, val _id: String)
```

| Member                      | Declaration                                          | Description |
| --------------------------- | ---------------------------------------------------- | ----------- |
| `ChatMessageReferenceModel` | `constructor(url: String, offset: Int, _id: String)` |             |
| `_id`                       | `@SerialName(value = "_id") val _id: String`         |             |
| `offset`                    | `@SerialName(value = "offset") val offset: Int`      |             |
| `url`                       | `@SerialName(value = "url") val url: String`         |             |

## Connection

`data class`

```kotlin
@Serializable
data class Connection(val bot: BotModel, val token: String = "", val chatId: String = "")
```

Connection model similar to iOS implementation

| Member       | Declaration                                                           | Description |
| ------------ | --------------------------------------------------------------------- | ----------- |
| `Connection` | `constructor(bot: BotModel, token: String = "", chatId: String = "")` |             |
| `bot`        | `val bot: BotModel`                                                   |             |
| `chatId`     | `val chatId: String`                                                  |             |
| `token`      | `val token: String`                                                   |             |

## ConnectiondData

`data class`

```kotlin
@Serializable
data class ConnectiondData(val chatId: String?, val created: String?, val token: String = "", val botName: String = "", val botAvatar: String?, val botTypingDuration: Int = 0, val botTypingIndicator: Boolean?, val allGreetingsHideInput: Boolean?)
```

| Member                  | Declaration                                                                                                                                                                                               | Description |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `ConnectiondData`       | `constructor(chatId: String?, created: String?, token: String = "", botName: String = "", botAvatar: String?, botTypingDuration: Int = 0, botTypingIndicator: Boolean?, allGreetingsHideInput: Boolean?)` |             |
| `allGreetingsHideInput` | `@SerialName(value = "all_greetings_hide_input") val allGreetingsHideInput: Boolean?`                                                                                                                     |             |
| `botAvatar`             | `@SerialName(value = "bot_avatar") val botAvatar: String?`                                                                                                                                                |             |
| `botName`               | `@SerialName(value = "bot_name") val botName: String`                                                                                                                                                     |             |
| `botTypingDuration`     | `@SerialName(value = "bot_typing_duration") val botTypingDuration: Int`                                                                                                                                   |             |
| `botTypingIndicator`    | `@SerialName(value = "bot_typing_indicator") val botTypingIndicator: Boolean?`                                                                                                                            |             |
| `chatId`                | `@SerialName(value = "chat_id") val chatId: String?`                                                                                                                                                      |             |
| `created`               | `@SerialName(value = "created") val created: String?`                                                                                                                                                     |             |
| `token`                 | `@SerialName(value = "token") val token: String`                                                                                                                                                          |             |

## ConnectionResponse

`data class`

```kotlin
@Serializable
data class ConnectionResponse(val chatId: String?, val created: String?, val token: String = "", val botName: String = "", val botAvatar: String = "", val botTypingDuration: Int = 0, val botTypingIndicator: Boolean?, val botPlaceholder: BotPlaceholder?, val allGreetingsHideInput: Boolean?, val greeting: MessageData?, val liveTranslationSystemDialogue: MessageData?)
```

| Member                             | Declaration                                                                                                                                                                                                                                                                                                         | Description                                                                          |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| `ConnectionResponse`               | `constructor(chatId: String?, created: String?, token: String = "", botName: String = "", botAvatar: String = "", botTypingDuration: Int = 0, botTypingIndicator: Boolean?, botPlaceholder: BotPlaceholder?, allGreetingsHideInput: Boolean?, greeting: MessageData?, liveTranslationSystemDialogue: MessageData?)` |                                                                                      |
| `allGreetingsHideInput`            | `@SerialName(value = "all_greetings_hide_input") val allGreetingsHideInput: Boolean?`                                                                                                                                                                                                                               |                                                                                      |
| `bot`                              | `val bot: BotModel`                                                                                                                                                                                                                                                                                                 | Gets or creates a BotModel from the response data                                    |
| `botAvatar`                        | `@SerialName(value = "bot_avatar") val botAvatar: String`                                                                                                                                                                                                                                                           |                                                                                      |
| `botName`                          | `@SerialName(value = "bot_name") val botName: String`                                                                                                                                                                                                                                                               |                                                                                      |
| `botPlaceholder`                   | `@SerialName(value = "bot_placeholder") val botPlaceholder: BotPlaceholder?`                                                                                                                                                                                                                                        |                                                                                      |
| `botTypingDuration`                | `@SerialName(value = "bot_typing_duration") val botTypingDuration: Int`                                                                                                                                                                                                                                             |                                                                                      |
| `botTypingIndicator`               | `@SerialName(value = "bot_typing_indicator") val botTypingIndicator: Boolean?`                                                                                                                                                                                                                                      |                                                                                      |
| `chatId`                           | `@SerialName(value = "chat_id") val chatId: String?`                                                                                                                                                                                                                                                                |                                                                                      |
| `created`                          | `@SerialName(value = "created") val created: String?`                                                                                                                                                                                                                                                               |                                                                                      |
| `greeting`                         | `@SerialName(value = "greeting") val greeting: MessageData?`                                                                                                                                                                                                                                                        |                                                                                      |
| `hasGreeting`                      | `val hasGreeting: Boolean`                                                                                                                                                                                                                                                                                          |                                                                                      |
| `hasLiveTranslationSystemDialogue` | `val hasLiveTranslationSystemDialogue: Boolean`                                                                                                                                                                                                                                                                     |                                                                                      |
| `liveTranslationSystemDialogue`    | `@SerialName(value = "live_translation_system_dialogue") val liveTranslationSystemDialogue: MessageData?`                                                                                                                                                                                                           |                                                                                      |
| `token`                            | `@SerialName(value = "token") val token: String`                                                                                                                                                                                                                                                                    |                                                                                      |
| `toConnection`                     | `fun toConnection(): Connection`                                                                                                                                                                                                                                                                                    | Converts this response to a Connection object Similar to iOS toConnection() function |

## ConnectModel

`data class`

```kotlin
@Serializable
data class ConnectModel(val context: Map<String, String>? = LifecycleVars.kindlyContext, val market: String? = null)
```

| Member         | Declaration                                                                                        | Description |
| -------------- | -------------------------------------------------------------------------------------------------- | ----------- |
| `ConnectModel` | `constructor(context: Map<String, String>? = LifecycleVars.kindlyContext, market: String? = null)` |             |
| `context`      | `val context: Map<String, String>?`                                                                |             |
| `market`       | `val market: String?`                                                                              |             |

## dummyMessageReferences

`property`

```kotlin
val dummyMessageReferences: List<ChatMessageReferenceModel>
```
