diff --git a/examples/android-example/.gitignore b/examples/android-example/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/examples/android-example/.gitignore
@@ -0,0 +1,15 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+local.properties
diff --git a/examples/android-example/build.gradle.kts b/examples/android-example/build.gradle.kts
new file mode 100644
index 00000000..d02b9063
--- /dev/null
+++ b/examples/android-example/build.gradle.kts
@@ -0,0 +1,6 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id("com.android.application") version "8.9.1" apply false
+ id("org.jetbrains.kotlin.android") version "1.9.0" apply false
+ id("com.android.library") version "8.9.1" apply false
+}
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/.gitignore b/examples/android-example/chat-ui-example/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/examples/android-example/chat-ui-example/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/build.gradle.kts b/examples/android-example/chat-ui-example/build.gradle.kts
new file mode 100644
index 00000000..242d529b
--- /dev/null
+++ b/examples/android-example/chat-ui-example/build.gradle.kts
@@ -0,0 +1,73 @@
+plugins {
+ id("com.android.application")
+ id("org.jetbrains.kotlin.android")
+}
+
+android {
+ namespace = "com.chatkitty.ui"
+ compileSdk = 35
+
+ kotlin {
+ jvmToolchain(17)
+ }
+
+ defaultConfig {
+ applicationId = "com.chatkitty.ui"
+ minSdk = 24
+ targetSdk = 35
+ versionCode = 1
+ versionName = "1.0"
+
+ testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ vectorDrawables {
+ useSupportLibrary = true
+ }
+ }
+
+ buildTypes {
+ release {
+ isMinifyEnabled = false
+ proguardFiles(
+ getDefaultProguardFile("proguard-android-optimize.txt"),
+ "proguard-rules.pro"
+ )
+ }
+ }
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+ }
+ kotlinOptions {
+ jvmTarget = "17"
+ }
+ buildFeatures {
+ compose = true
+ }
+ composeOptions {
+ kotlinCompilerExtensionVersion = "1.5.1"
+ }
+ packaging {
+ resources {
+ excludes += "/META-INF/{AL2.0,LGPL2.1}"
+ }
+ }
+}
+
+dependencies {
+ implementation(project(":chat-ui"))
+ implementation("androidx.core:core-ktx:1.15.0")
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.7")
+ implementation("androidx.activity:activity-compose:1.10.1")
+ implementation(platform("androidx.compose:compose-bom:2025.03.01"))
+ implementation("androidx.compose.ui:ui")
+ implementation("androidx.compose.ui:ui-graphics")
+ implementation("androidx.compose.ui:ui-tooling-preview")
+ implementation("androidx.compose.material3:material3")
+ testImplementation("junit:junit:4.13.2")
+ androidTestImplementation("androidx.test.ext:junit:1.2.1")
+ androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
+ androidTestImplementation(platform("androidx.compose:compose-bom:2025.03.01"))
+ androidTestImplementation("androidx.compose.ui:ui-test-junit4")
+ debugImplementation("androidx.compose.ui:ui-tooling")
+ debugImplementation("androidx.compose.ui:ui-test-manifest")
+}
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/proguard-rules.pro b/examples/android-example/chat-ui-example/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/examples/android-example/chat-ui-example/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/androidTest/java/com/chatkitty/ui/ExampleInstrumentedTest.kt b/examples/android-example/chat-ui-example/src/androidTest/java/com/chatkitty/ui/ExampleInstrumentedTest.kt
new file mode 100644
index 00000000..314ecfd4
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/androidTest/java/com/chatkitty/ui/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package com.chatkitty.ui
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("com.chatkitty.ui", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/AndroidManifest.xml b/examples/android-example/chat-ui-example/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..4cf1a72b
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/AndroidManifest.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/MainActivity.kt b/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/MainActivity.kt
new file mode 100644
index 00000000..ee5e26d1
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/MainActivity.kt
@@ -0,0 +1,62 @@
+package com.chatkitty.ui
+
+import android.os.Bundle
+import androidx.activity.ComponentActivity
+import androidx.activity.compose.setContent
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.viewinterop.AndroidView
+import com.chatkitty.ui.ui.theme.ChatUiTheme
+import com.chatkitty.ui.models.ApiConnection
+import com.chatkitty.ui.models.ChatUIComponents
+import com.chatkitty.ui.models.ChatUIConfiguration
+import com.chatkitty.ui.models.Theme
+import com.chatkitty.ui.ui.ChatUIView
+
+class MainActivity : ComponentActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContent {
+ ChatUiTheme {
+ Surface(
+ modifier = Modifier.fillMaxSize(),
+ color = MaterialTheme.colorScheme.background
+ ) {
+ ChatUIViewCompose()
+ }
+ }
+ }
+ }
+}
+@Composable
+fun ChatUIViewCompose() {
+ AndroidView(
+ modifier = Modifier.fillMaxSize(),
+ factory = { ctx ->
+ // Initialize your ChatUIView
+ ChatUIView(ctx)
+ .apply {
+ setChatUIConfig(
+ ChatUIConfiguration(
+ widgetId = "UWiEkKvdAaUJ1xut",
+ username = "2989c53a-d0c5-4222-af8d-fbf7b0c74ec6",
+ theme = Theme.LIGHT,
+ connection = ApiConnection("afaac908-1db3-4b5c-a7ae-c040b9684403")),
+ ChatUIComponents(onMounted = {
+ println("onMounted: $context")
+ }, onHeaderSelected = {
+ println("onHeaderSelected")
+ }, onMenuActionSelected = {
+ println("onMenuActionSelected")
+ })
+ )
+ }
+ },
+ update = { view ->
+ // Update your view if needed
+ }
+ )
+}
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/ui/theme/Color.kt b/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/ui/theme/Color.kt
new file mode 100644
index 00000000..ae973bb0
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/ui/theme/Color.kt
@@ -0,0 +1,11 @@
+package com.chatkitty.ui.ui.theme
+
+import androidx.compose.ui.graphics.Color
+
+val Purple80 = Color(0xFFD0BCFF)
+val PurpleGrey80 = Color(0xFFCCC2DC)
+val Pink80 = Color(0xFFEFB8C8)
+
+val Purple40 = Color(0xFF6650a4)
+val PurpleGrey40 = Color(0xFF625b71)
+val Pink40 = Color(0xFF7D5260)
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/ui/theme/Theme.kt b/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/ui/theme/Theme.kt
new file mode 100644
index 00000000..bf6ef405
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/ui/theme/Theme.kt
@@ -0,0 +1,70 @@
+package com.chatkitty.ui.ui.theme
+
+import android.app.Activity
+import android.os.Build
+import androidx.compose.foundation.isSystemInDarkTheme
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.darkColorScheme
+import androidx.compose.material3.dynamicDarkColorScheme
+import androidx.compose.material3.dynamicLightColorScheme
+import androidx.compose.material3.lightColorScheme
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.SideEffect
+import androidx.compose.ui.graphics.toArgb
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.platform.LocalView
+import androidx.core.view.WindowCompat
+
+private val DarkColorScheme = darkColorScheme(
+ primary = Purple80,
+ secondary = PurpleGrey80,
+ tertiary = Pink80
+)
+
+private val LightColorScheme = lightColorScheme(
+ primary = Purple40,
+ secondary = PurpleGrey40,
+ tertiary = Pink40
+
+ /* Other default colors to override
+ background = Color(0xFFFFFBFE),
+ surface = Color(0xFFFFFBFE),
+ onPrimary = Color.White,
+ onSecondary = Color.White,
+ onTertiary = Color.White,
+ onBackground = Color(0xFF1C1B1F),
+ onSurface = Color(0xFF1C1B1F),
+ */
+)
+
+@Composable
+fun ChatUiTheme(
+ darkTheme: Boolean = isSystemInDarkTheme(),
+ // Dynamic color is available on Android 12+
+ dynamicColor: Boolean = true,
+ content: @Composable () -> Unit
+) {
+ val colorScheme = when {
+ dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
+ val context = LocalContext.current
+ if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
+ }
+
+ darkTheme -> DarkColorScheme
+ else -> LightColorScheme
+ }
+ val view = LocalView.current
+ if (!view.isInEditMode) {
+ SideEffect {
+ val window = (view.context as Activity).window
+ window.statusBarColor = colorScheme.primary.toArgb()
+ WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme
+ }
+ }
+
+ MaterialTheme(
+ colorScheme = colorScheme,
+ typography = Typography,
+ content = content
+ )
+}
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/ui/theme/Type.kt b/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/ui/theme/Type.kt
new file mode 100644
index 00000000..23169309
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/java/com/chatkitty/ui/ui/theme/Type.kt
@@ -0,0 +1,34 @@
+package com.chatkitty.ui.ui.theme
+
+import androidx.compose.material3.Typography
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.font.FontFamily
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.unit.sp
+
+// Set of Material typography styles to start with
+val Typography = Typography(
+ bodyLarge = TextStyle(
+ fontFamily = FontFamily.Default,
+ fontWeight = FontWeight.Normal,
+ fontSize = 16.sp,
+ lineHeight = 24.sp,
+ letterSpacing = 0.5.sp
+ )
+ /* Other default text styles to override
+ titleLarge = TextStyle(
+ fontFamily = FontFamily.Default,
+ fontWeight = FontWeight.Normal,
+ fontSize = 22.sp,
+ lineHeight = 28.sp,
+ letterSpacing = 0.sp
+ ),
+ labelSmall = TextStyle(
+ fontFamily = FontFamily.Default,
+ fontWeight = FontWeight.Medium,
+ fontSize = 11.sp,
+ lineHeight = 16.sp,
+ letterSpacing = 0.5.sp
+ )
+ */
+)
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/res/drawable/ic_launcher_background.xml b/examples/android-example/chat-ui-example/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/android-example/chat-ui-example/src/main/res/drawable/ic_launcher_foreground.xml b/examples/android-example/chat-ui-example/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/examples/android-example/chat-ui-example/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..6f3b755b
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/examples/android-example/chat-ui-example/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..6f3b755b
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-hdpi/ic_launcher.webp b/examples/android-example/chat-ui-example/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 00000000..c209e78e
Binary files /dev/null and b/examples/android-example/chat-ui-example/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/examples/android-example/chat-ui-example/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..b2dfe3d1
Binary files /dev/null and b/examples/android-example/chat-ui-example/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-mdpi/ic_launcher.webp b/examples/android-example/chat-ui-example/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 00000000..4f0f1d64
Binary files /dev/null and b/examples/android-example/chat-ui-example/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/examples/android-example/chat-ui-example/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..62b611da
Binary files /dev/null and b/examples/android-example/chat-ui-example/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-xhdpi/ic_launcher.webp b/examples/android-example/chat-ui-example/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 00000000..948a3070
Binary files /dev/null and b/examples/android-example/chat-ui-example/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/examples/android-example/chat-ui-example/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..1b9a6956
Binary files /dev/null and b/examples/android-example/chat-ui-example/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/examples/android-example/chat-ui-example/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 00000000..28d4b77f
Binary files /dev/null and b/examples/android-example/chat-ui-example/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/examples/android-example/chat-ui-example/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..9287f508
Binary files /dev/null and b/examples/android-example/chat-ui-example/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/examples/android-example/chat-ui-example/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 00000000..aa7d6427
Binary files /dev/null and b/examples/android-example/chat-ui-example/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/examples/android-example/chat-ui-example/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/examples/android-example/chat-ui-example/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..9126ae37
Binary files /dev/null and b/examples/android-example/chat-ui-example/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/examples/android-example/chat-ui-example/src/main/res/values/colors.xml b/examples/android-example/chat-ui-example/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/res/values/strings.xml b/examples/android-example/chat-ui-example/src/main/res/values/strings.xml
new file mode 100644
index 00000000..7289a19a
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ ChatUi Example
+
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/res/values/themes.xml b/examples/android-example/chat-ui-example/src/main/res/values/themes.xml
new file mode 100644
index 00000000..0163b380
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/res/values/themes.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/res/xml/backup_rules.xml b/examples/android-example/chat-ui-example/src/main/res/xml/backup_rules.xml
new file mode 100644
index 00000000..fa0f996d
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+
+
+
+
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/main/res/xml/data_extraction_rules.xml b/examples/android-example/chat-ui-example/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 00000000..9ee9997b
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/android-example/chat-ui-example/src/test/java/com/chatkitty/ui/ExampleUnitTest.kt b/examples/android-example/chat-ui-example/src/test/java/com/chatkitty/ui/ExampleUnitTest.kt
new file mode 100644
index 00000000..39bfa984
--- /dev/null
+++ b/examples/android-example/chat-ui-example/src/test/java/com/chatkitty/ui/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package com.chatkitty.ui
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
\ No newline at end of file
diff --git a/examples/android-example/gradle.properties b/examples/android-example/gradle.properties
new file mode 100644
index 00000000..3c5031eb
--- /dev/null
+++ b/examples/android-example/gradle.properties
@@ -0,0 +1,23 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Kotlin code style for this project: "official" or "obsolete":
+kotlin.code.style=official
+# Enables namespacing of each library's R class so that its R class includes only the
+# resources declared in the library itself and none from the library's dependencies,
+# thereby reducing the size of the R class for that library
+android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/examples/android-example/gradle/wrapper/gradle-wrapper.jar b/examples/android-example/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..e708b1c0
Binary files /dev/null and b/examples/android-example/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/examples/android-example/gradle/wrapper/gradle-wrapper.properties b/examples/android-example/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..1701e3f1
--- /dev/null
+++ b/examples/android-example/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Dec 27 19:10:36 EST 2023
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/examples/android-example/gradlew b/examples/android-example/gradlew
new file mode 100755
index 00000000..4f906e0c
--- /dev/null
+++ b/examples/android-example/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/examples/android-example/gradlew.bat b/examples/android-example/gradlew.bat
new file mode 100644
index 00000000..107acd32
--- /dev/null
+++ b/examples/android-example/gradlew.bat
@@ -0,0 +1,89 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/examples/android-example/models/.openapi-generator-ignore b/examples/android-example/models/.openapi-generator-ignore
new file mode 100644
index 00000000..7484ee59
--- /dev/null
+++ b/examples/android-example/models/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/examples/android-example/models/.openapi-generator/FILES b/examples/android-example/models/.openapi-generator/FILES
new file mode 100644
index 00000000..1b479d9b
--- /dev/null
+++ b/examples/android-example/models/.openapi-generator/FILES
@@ -0,0 +1,310 @@
+README.md
+build.gradle
+docs/AddChannelMemberRequest.md
+docs/AnalyticsApi.md
+docs/ApiError.md
+docs/ApplicationApi.md
+docs/ApplicationJobResource.md
+docs/ApplicationResource.md
+docs/ApplicationSentSystemMessageNotificationData.md
+docs/ApplicationSettingsProperties.md
+docs/ApplicationSettingsResource.md
+docs/AuthenticationError.md
+docs/ChannelGenericEventResource.md
+docs/ChannelImport.md
+docs/ChannelInviteResource.md
+docs/ChannelMembershipImport.md
+docs/ChannelMembershipResource.md
+docs/ChannelMessageMentionProperties.md
+docs/ChannelProperties.md
+docs/ChannelPropertiesPatch.md
+docs/ChannelResource.md
+docs/ChannelsApi.md
+docs/ChatFunctionChatRuntimeProperties.md
+docs/ChatFunctionInvocationResource.md
+docs/ChatFunctionResource.md
+docs/ChatFunctionVersionResource.md
+docs/ChatRuntimeDependencyProperties.md
+docs/ChatRuntimeProperties.md
+docs/ChatRuntimeResource.md
+docs/ChatRuntimeScriptProperties.md
+docs/ChatSessionResource.md
+docs/ChatSessionsApi.md
+docs/ChatUserIdReference.md
+docs/ChatUserImport.md
+docs/ChatUserMentionedChannelNotificationData.md
+docs/ChatUserMentionedChatUserNotificationData.md
+docs/ChatUserMessageMentionProperties.md
+docs/ChatUserMessageResource.md
+docs/ChatUserPresenceProperties.md
+docs/ChatUserPresencePropertiesPatch.md
+docs/ChatUserProperties.md
+docs/ChatUserPropertiesPatch.md
+docs/ChatUserRepliedToChatUserMessageNotificationData.md
+docs/ChatUserResource.md
+docs/ChatUserSentChatUserMessageNotificationData.md
+docs/ChatUserSessionProperties.md
+docs/ChatUserSessionResource.md
+docs/ChatUserUsernameReference.md
+docs/CreateChannelGenericEventResource.md
+docs/CreateChannelInviteResource.md
+docs/CreateChannelRequest.md
+docs/CreateChannelResource.md
+docs/CreateChatFunctionResource.md
+docs/CreateChatFunctionVersionResource.md
+docs/CreateDelegatedReplyThreadKeystrokesResource.md
+docs/CreateDirectChannelResource.md
+docs/CreateExternalFileProperties.md
+docs/CreateFileMessageResource.md
+docs/CreateMessageResource.md
+docs/CreatePersonChatUserResource.md
+docs/CreatePrivateChannelResource.md
+docs/CreatePublicChannelResource.md
+docs/CreateTextMessageResource.md
+docs/CursorPageMetadata.md
+docs/CursorPagedModelMessageResource.md
+docs/CursorPagedModelMessageResourceEmbedded.md
+docs/CursorPagedModelNotificationResource.md
+docs/CursorPagedModelNotificationResourceEmbedded.md
+docs/DirectChannelImport.md
+docs/DirectChannelProperties.md
+docs/DirectChannelResource.md
+docs/EmojiProperties.md
+docs/FileChatUserMessageProperties.md
+docs/FileChatUserMessageResource.md
+docs/FileImport.md
+docs/FileProperties.md
+docs/FileSystemMessageProperties.md
+docs/FileSystemMessageResource.md
+docs/FunctionVersionsApi.md
+docs/FunctionsApi.md
+docs/GroupChannelImport.md
+docs/ImportsApi.md
+docs/JobsApi.md
+docs/Link.md
+docs/MessageImport.md
+docs/MessageLinkPreviewImageProperties.md
+docs/MessageLinkPreviewProperties.md
+docs/MessageLinkProperties.md
+docs/MessageMentionChannelProperties.md
+docs/MessageMentionProperties.md
+docs/MessageProperties.md
+docs/MessagePropertiesPatch.md
+docs/MessageReactionsSummaryProperties.md
+docs/MessageReadReceiptResource.md
+docs/MessageResource.md
+docs/MessagesApi.md
+docs/NotificationData.md
+docs/NotificationResource.md
+docs/NotificationResourceChannel.md
+docs/PageMetadata.md
+docs/PagedModelApplicationJobResource.md
+docs/PagedModelApplicationJobResourceEmbedded.md
+docs/PagedModelChannelInviteResource.md
+docs/PagedModelChannelInviteResourceEmbedded.md
+docs/PagedModelChannelMembershipResource.md
+docs/PagedModelChannelMembershipResourceEmbedded.md
+docs/PagedModelChannelResource.md
+docs/PagedModelChannelResourceEmbedded.md
+docs/PagedModelChatFunctionInvocationResource.md
+docs/PagedModelChatFunctionInvocationResourceEmbedded.md
+docs/PagedModelChatFunctionResource.md
+docs/PagedModelChatFunctionResourceEmbedded.md
+docs/PagedModelChatFunctionVersionResource.md
+docs/PagedModelChatFunctionVersionResourceEmbedded.md
+docs/PagedModelChatSessionResource.md
+docs/PagedModelChatSessionResourceEmbedded.md
+docs/PagedModelChatUserResource.md
+docs/PagedModelChatUserResourceEmbedded.md
+docs/PagedModelChatUserSessionResource.md
+docs/PagedModelChatUserSessionResourceEmbedded.md
+docs/PagedModelMessageReadReceiptResource.md
+docs/PagedModelMessageReadReceiptResourceEmbedded.md
+docs/PrivateChannelImport.md
+docs/PrivateChannelProperties.md
+docs/PrivateChannelResource.md
+docs/PublicChannelImport.md
+docs/PublicChannelProperties.md
+docs/PublicChannelResource.md
+docs/ReplyThreadKeystrokesResource.md
+docs/ReplyThreadResource.md
+docs/RuntimeApi.md
+docs/SecretResource.md
+docs/SendChannelMessageRequest.md
+docs/SystemMessageResource.md
+docs/TextChatUserMessageImport.md
+docs/TextChatUserMessageProperties.md
+docs/TextChatUserMessageResource.md
+docs/TextMessageImport.md
+docs/TextMessageResource.md
+docs/TextSystemMessageImport.md
+docs/TextSystemMessageProperties.md
+docs/TextSystemMessageResource.md
+docs/ThreadsApi.md
+docs/UserSessionsApi.md
+docs/UsersApi.md
+gradle/wrapper/gradle-wrapper.jar
+gradle/wrapper/gradle-wrapper.properties
+gradlew
+gradlew.bat
+settings.gradle
+src/main/kotlin/org/openapitools/client/apis/AnalyticsApi.kt
+src/main/kotlin/org/openapitools/client/apis/ApplicationApi.kt
+src/main/kotlin/org/openapitools/client/apis/ChannelsApi.kt
+src/main/kotlin/org/openapitools/client/apis/ChatSessionsApi.kt
+src/main/kotlin/org/openapitools/client/apis/FunctionVersionsApi.kt
+src/main/kotlin/org/openapitools/client/apis/FunctionsApi.kt
+src/main/kotlin/org/openapitools/client/apis/ImportsApi.kt
+src/main/kotlin/org/openapitools/client/apis/JobsApi.kt
+src/main/kotlin/org/openapitools/client/apis/MessagesApi.kt
+src/main/kotlin/org/openapitools/client/apis/RuntimeApi.kt
+src/main/kotlin/org/openapitools/client/apis/ThreadsApi.kt
+src/main/kotlin/org/openapitools/client/apis/UserSessionsApi.kt
+src/main/kotlin/org/openapitools/client/apis/UsersApi.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
+src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
+src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/PartConfig.kt
+src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt
+src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt
+src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
+src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt
+src/main/kotlin/org/openapitools/client/models/AddChannelMemberRequest.kt
+src/main/kotlin/org/openapitools/client/models/ApiError.kt
+src/main/kotlin/org/openapitools/client/models/ApplicationJobResource.kt
+src/main/kotlin/org/openapitools/client/models/ApplicationResource.kt
+src/main/kotlin/org/openapitools/client/models/ApplicationSentSystemMessageNotificationData.kt
+src/main/kotlin/org/openapitools/client/models/ApplicationSettingsProperties.kt
+src/main/kotlin/org/openapitools/client/models/ApplicationSettingsResource.kt
+src/main/kotlin/org/openapitools/client/models/AuthenticationError.kt
+src/main/kotlin/org/openapitools/client/models/ChannelGenericEventResource.kt
+src/main/kotlin/org/openapitools/client/models/ChannelImport.kt
+src/main/kotlin/org/openapitools/client/models/ChannelInviteResource.kt
+src/main/kotlin/org/openapitools/client/models/ChannelMembershipImport.kt
+src/main/kotlin/org/openapitools/client/models/ChannelMembershipResource.kt
+src/main/kotlin/org/openapitools/client/models/ChannelMessageMentionProperties.kt
+src/main/kotlin/org/openapitools/client/models/ChannelProperties.kt
+src/main/kotlin/org/openapitools/client/models/ChannelPropertiesPatch.kt
+src/main/kotlin/org/openapitools/client/models/ChannelResource.kt
+src/main/kotlin/org/openapitools/client/models/ChatFunctionChatRuntimeProperties.kt
+src/main/kotlin/org/openapitools/client/models/ChatFunctionInvocationResource.kt
+src/main/kotlin/org/openapitools/client/models/ChatFunctionResource.kt
+src/main/kotlin/org/openapitools/client/models/ChatFunctionVersionResource.kt
+src/main/kotlin/org/openapitools/client/models/ChatRuntimeDependencyProperties.kt
+src/main/kotlin/org/openapitools/client/models/ChatRuntimeProperties.kt
+src/main/kotlin/org/openapitools/client/models/ChatRuntimeResource.kt
+src/main/kotlin/org/openapitools/client/models/ChatRuntimeScriptProperties.kt
+src/main/kotlin/org/openapitools/client/models/ChatSessionResource.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserIdReference.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserImport.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserMentionedChannelNotificationData.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserMentionedChatUserNotificationData.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserMessageMentionProperties.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserMessageResource.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserPresenceProperties.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserPresencePropertiesPatch.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserProperties.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserPropertiesPatch.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserRepliedToChatUserMessageNotificationData.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserResource.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserSentChatUserMessageNotificationData.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserSessionProperties.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserSessionResource.kt
+src/main/kotlin/org/openapitools/client/models/ChatUserUsernameReference.kt
+src/main/kotlin/org/openapitools/client/models/CreateChannelGenericEventResource.kt
+src/main/kotlin/org/openapitools/client/models/CreateChannelInviteResource.kt
+src/main/kotlin/org/openapitools/client/models/CreateChannelRequest.kt
+src/main/kotlin/org/openapitools/client/models/CreateChannelResource.kt
+src/main/kotlin/org/openapitools/client/models/CreateChatFunctionResource.kt
+src/main/kotlin/org/openapitools/client/models/CreateChatFunctionVersionResource.kt
+src/main/kotlin/org/openapitools/client/models/CreateDelegatedReplyThreadKeystrokesResource.kt
+src/main/kotlin/org/openapitools/client/models/CreateDirectChannelResource.kt
+src/main/kotlin/org/openapitools/client/models/CreateExternalFileProperties.kt
+src/main/kotlin/org/openapitools/client/models/CreateFileMessageResource.kt
+src/main/kotlin/org/openapitools/client/models/CreateMessageResource.kt
+src/main/kotlin/org/openapitools/client/models/CreatePersonChatUserResource.kt
+src/main/kotlin/org/openapitools/client/models/CreatePrivateChannelResource.kt
+src/main/kotlin/org/openapitools/client/models/CreatePublicChannelResource.kt
+src/main/kotlin/org/openapitools/client/models/CreateTextMessageResource.kt
+src/main/kotlin/org/openapitools/client/models/CursorPageMetadata.kt
+src/main/kotlin/org/openapitools/client/models/CursorPagedModelMessageResource.kt
+src/main/kotlin/org/openapitools/client/models/CursorPagedModelMessageResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/CursorPagedModelNotificationResource.kt
+src/main/kotlin/org/openapitools/client/models/CursorPagedModelNotificationResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/DirectChannelImport.kt
+src/main/kotlin/org/openapitools/client/models/DirectChannelProperties.kt
+src/main/kotlin/org/openapitools/client/models/DirectChannelResource.kt
+src/main/kotlin/org/openapitools/client/models/EmojiProperties.kt
+src/main/kotlin/org/openapitools/client/models/FileChatUserMessageProperties.kt
+src/main/kotlin/org/openapitools/client/models/FileChatUserMessageResource.kt
+src/main/kotlin/org/openapitools/client/models/FileImport.kt
+src/main/kotlin/org/openapitools/client/models/FileProperties.kt
+src/main/kotlin/org/openapitools/client/models/FileSystemMessageProperties.kt
+src/main/kotlin/org/openapitools/client/models/FileSystemMessageResource.kt
+src/main/kotlin/org/openapitools/client/models/GroupChannelImport.kt
+src/main/kotlin/org/openapitools/client/models/Link.kt
+src/main/kotlin/org/openapitools/client/models/MessageImport.kt
+src/main/kotlin/org/openapitools/client/models/MessageLinkPreviewImageProperties.kt
+src/main/kotlin/org/openapitools/client/models/MessageLinkPreviewProperties.kt
+src/main/kotlin/org/openapitools/client/models/MessageLinkProperties.kt
+src/main/kotlin/org/openapitools/client/models/MessageMentionChannelProperties.kt
+src/main/kotlin/org/openapitools/client/models/MessageMentionProperties.kt
+src/main/kotlin/org/openapitools/client/models/MessageProperties.kt
+src/main/kotlin/org/openapitools/client/models/MessagePropertiesPatch.kt
+src/main/kotlin/org/openapitools/client/models/MessageReactionsSummaryProperties.kt
+src/main/kotlin/org/openapitools/client/models/MessageReadReceiptResource.kt
+src/main/kotlin/org/openapitools/client/models/MessageResource.kt
+src/main/kotlin/org/openapitools/client/models/NotificationData.kt
+src/main/kotlin/org/openapitools/client/models/NotificationResource.kt
+src/main/kotlin/org/openapitools/client/models/NotificationResourceChannel.kt
+src/main/kotlin/org/openapitools/client/models/PageMetadata.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelApplicationJobResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelApplicationJobResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChannelInviteResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChannelInviteResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChannelMembershipResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChannelMembershipResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChannelResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChannelResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionInvocationResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionInvocationResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionVersionResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionVersionResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatSessionResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatSessionResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatUserResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatUserResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatUserSessionResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelChatUserSessionResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelMessageReadReceiptResource.kt
+src/main/kotlin/org/openapitools/client/models/PagedModelMessageReadReceiptResourceEmbedded.kt
+src/main/kotlin/org/openapitools/client/models/PrivateChannelImport.kt
+src/main/kotlin/org/openapitools/client/models/PrivateChannelProperties.kt
+src/main/kotlin/org/openapitools/client/models/PrivateChannelResource.kt
+src/main/kotlin/org/openapitools/client/models/PublicChannelImport.kt
+src/main/kotlin/org/openapitools/client/models/PublicChannelProperties.kt
+src/main/kotlin/org/openapitools/client/models/PublicChannelResource.kt
+src/main/kotlin/org/openapitools/client/models/ReplyThreadKeystrokesResource.kt
+src/main/kotlin/org/openapitools/client/models/ReplyThreadResource.kt
+src/main/kotlin/org/openapitools/client/models/SecretResource.kt
+src/main/kotlin/org/openapitools/client/models/SendChannelMessageRequest.kt
+src/main/kotlin/org/openapitools/client/models/SystemMessageResource.kt
+src/main/kotlin/org/openapitools/client/models/TextChatUserMessageImport.kt
+src/main/kotlin/org/openapitools/client/models/TextChatUserMessageProperties.kt
+src/main/kotlin/org/openapitools/client/models/TextChatUserMessageResource.kt
+src/main/kotlin/org/openapitools/client/models/TextMessageImport.kt
+src/main/kotlin/org/openapitools/client/models/TextMessageResource.kt
+src/main/kotlin/org/openapitools/client/models/TextSystemMessageImport.kt
+src/main/kotlin/org/openapitools/client/models/TextSystemMessageProperties.kt
+src/main/kotlin/org/openapitools/client/models/TextSystemMessageResource.kt
diff --git a/examples/android-example/models/.openapi-generator/VERSION b/examples/android-example/models/.openapi-generator/VERSION
new file mode 100644
index 00000000..4b49d9bb
--- /dev/null
+++ b/examples/android-example/models/.openapi-generator/VERSION
@@ -0,0 +1 @@
+7.2.0
\ No newline at end of file
diff --git a/examples/android-example/models/README.md b/examples/android-example/models/README.md
new file mode 100644
index 00000000..5cf0a724
--- /dev/null
+++ b/examples/android-example/models/README.md
@@ -0,0 +1,270 @@
+# org.openapitools.client - Kotlin client library for ChatKitty Platform API
+
+OpenAPI specification (OAS) for the ChatKitty Platform API.
+See the Interactive Docs to try ChatKitty API methods without writing code,
+and get the complete schema of resources exposed by the API.
+
+## Overview
+This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate an API client.
+
+- API version: 2.41.9
+- Package version:
+- Build package: org.openapitools.codegen.languages.KotlinClientCodegen
+For more information, please visit [mailto:support@chatkitty.com](mailto:support@chatkitty.com)
+
+## Requires
+
+* Kotlin 1.7.21
+* Gradle 7.5
+
+## Build
+
+First, create the gradle wrapper script:
+
+```
+gradle wrapper
+```
+
+Then, run:
+
+```
+./gradlew check assemble
+```
+
+This runs all tests and packages the library.
+
+## Features/Implementation Notes
+
+* Supports JSON inputs/outputs, File inputs, and Form inputs.
+* Supports collection formats for query parameters: csv, tsv, ssv, pipes.
+* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions.
+* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets.
+
+
+## Documentation for API Endpoints
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*AnalyticsApi* | [**exportMessageAnalytics**](docs/AnalyticsApi.md#exportmessageanalytics) | **POST** /v1/analytics/messages | Export message analytics
+*AnalyticsApi* | [**exportUserAnalytics**](docs/AnalyticsApi.md#exportuseranalytics) | **POST** /v1/analytics/users | Export user analytics
+*ApplicationApi* | [**retrieveAuthenticatedApplication**](docs/ApplicationApi.md#retrieveauthenticatedapplication) | **GET** /v1/application | Retrieve the authenticated application
+*ApplicationApi* | [**retrieveAuthenticatedApplicationSettings**](docs/ApplicationApi.md#retrieveauthenticatedapplicationsettings) | **GET** /v1/application/settings | Retrieve the authenticated application settings
+*ApplicationApi* | [**updateAuthenticatedApplicationSettings**](docs/ApplicationApi.md#updateauthenticatedapplicationsettings) | **PUT** /v1/application/settings | Update the authenticated application settings
+*ChannelsApi* | [**addChannelMember**](docs/ChannelsApi.md#addchannelmember) | **POST** /v1/channels/{id}/members | Add a channel member
+*ChannelsApi* | [**addChannelModerator**](docs/ChannelsApi.md#addchannelmoderator) | **POST** /v1/channels/{id}/moderators | Add a channel moderator
+*ChannelsApi* | [**createChannel**](docs/ChannelsApi.md#createchannel) | **POST** /v1/channels | Create a channel
+*ChannelsApi* | [**deleteChannel**](docs/ChannelsApi.md#deletechannel) | **DELETE** /v1/channels/{id} | Delete a channel
+*ChannelsApi* | [**listChannelInvites**](docs/ChannelsApi.md#listchannelinvites) | **GET** /v1/channels/{id}/invites | List channel invites
+*ChannelsApi* | [**listChannelMembers**](docs/ChannelsApi.md#listchannelmembers) | **GET** /v1/channels/{id}/members | List a channel's members
+*ChannelsApi* | [**listChannelMemberships**](docs/ChannelsApi.md#listchannelmemberships) | **GET** /v1/channels/{id}/memberships | List channel memberships
+*ChannelsApi* | [**listChannelMessages**](docs/ChannelsApi.md#listchannelmessages) | **GET** /v1/channels/{id}/messages | List channel messages
+*ChannelsApi* | [**listChannelModerators**](docs/ChannelsApi.md#listchannelmoderators) | **GET** /v1/channels/{id}/moderators | Lists a channel's moderators
+*ChannelsApi* | [**listChannelParticipants**](docs/ChannelsApi.md#listchannelparticipants) | **GET** /v1/channels/{id}/participants | List channel participants
+*ChannelsApi* | [**listChannels**](docs/ChannelsApi.md#listchannels) | **GET** /v1/channels | List channels
+*ChannelsApi* | [**removeChannelMember**](docs/ChannelsApi.md#removechannelmember) | **DELETE** /v1/channels/{id}/members/{user_id} | Remove a channel member
+*ChannelsApi* | [**removeChannelModerator**](docs/ChannelsApi.md#removechannelmoderator) | **DELETE** /v1/channels/{id}/moderators/{user_id} | Remove a channel moderator
+*ChannelsApi* | [**retrieveChannel**](docs/ChannelsApi.md#retrievechannel) | **GET** /v1/channels/{id} | Retrieve a channel
+*ChannelsApi* | [**sendChannelEvent**](docs/ChannelsApi.md#sendchannelevent) | **POST** /v1/channels/{id}/events | Send a channel event
+*ChannelsApi* | [**sendChannelInvite**](docs/ChannelsApi.md#sendchannelinvite) | **POST** /v1/channels/{id}/invites | Send a channel invite
+*ChannelsApi* | [**sendChannelKeystrokes**](docs/ChannelsApi.md#sendchannelkeystrokes) | **POST** /v1/channels/{id}/keystrokes | Send channel keystrokes
+*ChannelsApi* | [**sendChannelMessage**](docs/ChannelsApi.md#sendchannelmessage) | **POST** /v1/channels/{id}/messages | Send a channel message
+*ChannelsApi* | [**updateChannel**](docs/ChannelsApi.md#updatechannel) | **PATCH** /v1/channels/{id} | Update a channel
+*ChatSessionsApi* | [**listChatSessions**](docs/ChatSessionsApi.md#listchatsessions) | **GET** /v1/chat-sessions | List chat sessions
+*FunctionVersionsApi* | [**retrieveFunctionVersion**](docs/FunctionVersionsApi.md#retrievefunctionversion) | **GET** /v1/function-versions/{id} | Retrieve a chat function version
+*FunctionsApi* | [**createFunctionVersion**](docs/FunctionsApi.md#createfunctionversion) | **POST** /v1/functions/{id}/versions | Create a chat function version
+*FunctionsApi* | [**listFunctionInvocations**](docs/FunctionsApi.md#listfunctioninvocations) | **GET** /v1/functions/{id}/invocations | List chat function invocations
+*FunctionsApi* | [**listFunctionVersions**](docs/FunctionsApi.md#listfunctionversions) | **GET** /v1/functions/{id}/versions | List chat function versions
+*FunctionsApi* | [**retrieveFunction**](docs/FunctionsApi.md#retrievefunction) | **GET** /v1/functions/{id} | Retrieve a chat function
+*FunctionsApi* | [**retrieveFunctionCurrentVersion**](docs/FunctionsApi.md#retrievefunctioncurrentversion) | **GET** /v1/functions/{id}/current-version | Retrieve chat function current version
+*ImportsApi* | [**importChannelMembers**](docs/ImportsApi.md#importchannelmembers) | **POST** /v1/imports/channels/{id}/members | Import channel members
+*ImportsApi* | [**importChannels**](docs/ImportsApi.md#importchannels) | **POST** /v1/imports/channels | Import channels
+*ImportsApi* | [**importMessages**](docs/ImportsApi.md#importmessages) | **POST** /v1/imports/messages | Import messages
+*ImportsApi* | [**importUsers**](docs/ImportsApi.md#importusers) | **POST** /v1/imports/users | Import users
+*JobsApi* | [**listJobs**](docs/JobsApi.md#listjobs) | **GET** /v1/jobs | List jobs
+*JobsApi* | [**retrieveJob**](docs/JobsApi.md#retrievejob) | **GET** /v1/jobs/{id} | Retrieve a job
+*MessagesApi* | [**deleteMessage**](docs/MessagesApi.md#deletemessage) | **DELETE** /v1/messages/{id} | Delete a message
+*MessagesApi* | [**deleteMessages**](docs/MessagesApi.md#deletemessages) | **DELETE** /v1/messages | Delete messages
+*MessagesApi* | [**listMessageReadReceipts**](docs/MessagesApi.md#listmessagereadreceipts) | **GET** /v1/messages/{id}/read-receipts | List message read receipts
+*MessagesApi* | [**listMessages**](docs/MessagesApi.md#listmessages) | **GET** /v1/messages | List messages
+*MessagesApi* | [**retrieveMessage**](docs/MessagesApi.md#retrievemessage) | **GET** /v1/messages/{id} | Retrieve a message
+*MessagesApi* | [**updateMessage**](docs/MessagesApi.md#updatemessage) | **PATCH** /v1/messages/{id} | Update a message
+*RuntimeApi* | [**createNodejsRuntimeFunction**](docs/RuntimeApi.md#createnodejsruntimefunction) | **POST** /v1/runtimes/nodejs/functions | Create a NodeJS chat runtime function
+*RuntimeApi* | [**listNodejsRuntimeFunctions**](docs/RuntimeApi.md#listnodejsruntimefunctions) | **GET** /v1/runtimes/nodejs/functions | List NodeJS chat runtime functions
+*RuntimeApi* | [**retrieveNodejsRuntime**](docs/RuntimeApi.md#retrievenodejsruntime) | **GET** /v1/runtimes/nodejs | Retrieve NodeJS chat runtime
+*RuntimeApi* | [**updateNodejsRuntimeDependencies**](docs/RuntimeApi.md#updatenodejsruntimedependencies) | **PUT** /v1/runtimes/nodejs/dependencies | Update NodeJS chat runtime NPM dependencies
+*RuntimeApi* | [**updateNodejsRuntimeEnvironmentVariables**](docs/RuntimeApi.md#updatenodejsruntimeenvironmentvariables) | **PUT** /v1/runtimes/nodejs/environment-variables | Update NodeJS chat runtime environment variables
+*RuntimeApi* | [**updateNodejsRuntimeInitializationScript**](docs/RuntimeApi.md#updatenodejsruntimeinitializationscript) | **PUT** /v1/runtimes/nodejs/initialization-script | Update NodeJS chat runtime initialization script
+*ThreadsApi* | [**listThreadMessages**](docs/ThreadsApi.md#listthreadmessages) | **GET** /v1/threads/{id}/messages | List reply thread messages
+*ThreadsApi* | [**retrieveThread**](docs/ThreadsApi.md#retrievethread) | **GET** /v1/threads/{id} | Retrieve a thread
+*ThreadsApi* | [**sendThreadKeystrokes**](docs/ThreadsApi.md#sendthreadkeystrokes) | **POST** /v1/threads/{id}/keystrokes | Send thread keystrokes
+*ThreadsApi* | [**sendThreadMessage**](docs/ThreadsApi.md#sendthreadmessage) | **POST** /v1/threads/{id}/messages | Send a reply thread message
+*UserSessionsApi* | [**listUserSessions**](docs/UserSessionsApi.md#listusersessions) | **GET** /v1/user-sessions | List user sessions
+*UsersApi* | [**checkUserExists**](docs/UsersApi.md#checkuserexists) | **HEAD** /v1/users | Check a user exists
+*UsersApi* | [**createUser**](docs/UsersApi.md#createuser) | **POST** /v1/users | Create a user
+*UsersApi* | [**deleteUser**](docs/UsersApi.md#deleteuser) | **DELETE** /v1/users/{id} | Delete a user
+*UsersApi* | [**listUserChannels**](docs/UsersApi.md#listuserchannels) | **GET** /v1/users/{id}/channels | List a user's channels
+*UsersApi* | [**listUserMessages**](docs/UsersApi.md#listusermessages) | **GET** /v1/users/{id}/messages | List a user's messages
+*UsersApi* | [**listUserNotifications**](docs/UsersApi.md#listusernotifications) | **GET** /v1/users/{id}/notifications | List a user's notifications
+*UsersApi* | [**listUsers**](docs/UsersApi.md#listusers) | **GET** /v1/users | List users
+*UsersApi* | [**removeUserSecret**](docs/UsersApi.md#removeusersecret) | **DELETE** /v1/users/{id}/secrets/{name} | Remove a user secret
+*UsersApi* | [**retrieveUser**](docs/UsersApi.md#retrieveuser) | **GET** /v1/users/{id} | Retrieve a user
+*UsersApi* | [**retrieveUserSecret**](docs/UsersApi.md#retrieveusersecret) | **GET** /v1/users/{id}/secrets/{name} | Retrieve a user secret
+*UsersApi* | [**setUserSecret**](docs/UsersApi.md#setusersecret) | **PUT** /v1/users/{id}/secrets/{name} | Set a user secret
+*UsersApi* | [**updateUser**](docs/UsersApi.md#updateuser) | **PATCH** /v1/users/{id} | Update a user
+*UsersApi* | [**updateUserDisplayPicture**](docs/UsersApi.md#updateuserdisplaypicture) | **POST** /v1/users/{id}/display-picture | Update a user's display picture
+
+
+
+## Documentation for Models
+
+ - [org.openapitools.client.models.AddChannelMemberRequest](docs/AddChannelMemberRequest.md)
+ - [org.openapitools.client.models.ApiError](docs/ApiError.md)
+ - [org.openapitools.client.models.ApplicationJobResource](docs/ApplicationJobResource.md)
+ - [org.openapitools.client.models.ApplicationResource](docs/ApplicationResource.md)
+ - [org.openapitools.client.models.ApplicationSentSystemMessageNotificationData](docs/ApplicationSentSystemMessageNotificationData.md)
+ - [org.openapitools.client.models.ApplicationSettingsProperties](docs/ApplicationSettingsProperties.md)
+ - [org.openapitools.client.models.ApplicationSettingsResource](docs/ApplicationSettingsResource.md)
+ - [org.openapitools.client.models.AuthenticationError](docs/AuthenticationError.md)
+ - [org.openapitools.client.models.ChannelGenericEventResource](docs/ChannelGenericEventResource.md)
+ - [org.openapitools.client.models.ChannelImport](docs/ChannelImport.md)
+ - [org.openapitools.client.models.ChannelInviteResource](docs/ChannelInviteResource.md)
+ - [org.openapitools.client.models.ChannelMembershipImport](docs/ChannelMembershipImport.md)
+ - [org.openapitools.client.models.ChannelMembershipResource](docs/ChannelMembershipResource.md)
+ - [org.openapitools.client.models.ChannelMessageMentionProperties](docs/ChannelMessageMentionProperties.md)
+ - [org.openapitools.client.models.ChannelProperties](docs/ChannelProperties.md)
+ - [org.openapitools.client.models.ChannelPropertiesPatch](docs/ChannelPropertiesPatch.md)
+ - [org.openapitools.client.models.ChannelResource](docs/ChannelResource.md)
+ - [org.openapitools.client.models.ChatFunctionChatRuntimeProperties](docs/ChatFunctionChatRuntimeProperties.md)
+ - [org.openapitools.client.models.ChatFunctionInvocationResource](docs/ChatFunctionInvocationResource.md)
+ - [org.openapitools.client.models.ChatFunctionResource](docs/ChatFunctionResource.md)
+ - [org.openapitools.client.models.ChatFunctionVersionResource](docs/ChatFunctionVersionResource.md)
+ - [org.openapitools.client.models.ChatRuntimeDependencyProperties](docs/ChatRuntimeDependencyProperties.md)
+ - [org.openapitools.client.models.ChatRuntimeProperties](docs/ChatRuntimeProperties.md)
+ - [org.openapitools.client.models.ChatRuntimeResource](docs/ChatRuntimeResource.md)
+ - [org.openapitools.client.models.ChatRuntimeScriptProperties](docs/ChatRuntimeScriptProperties.md)
+ - [org.openapitools.client.models.ChatSessionResource](docs/ChatSessionResource.md)
+ - [org.openapitools.client.models.ChatUserIdReference](docs/ChatUserIdReference.md)
+ - [org.openapitools.client.models.ChatUserImport](docs/ChatUserImport.md)
+ - [org.openapitools.client.models.ChatUserMentionedChannelNotificationData](docs/ChatUserMentionedChannelNotificationData.md)
+ - [org.openapitools.client.models.ChatUserMentionedChatUserNotificationData](docs/ChatUserMentionedChatUserNotificationData.md)
+ - [org.openapitools.client.models.ChatUserMessageMentionProperties](docs/ChatUserMessageMentionProperties.md)
+ - [org.openapitools.client.models.ChatUserMessageResource](docs/ChatUserMessageResource.md)
+ - [org.openapitools.client.models.ChatUserPresenceProperties](docs/ChatUserPresenceProperties.md)
+ - [org.openapitools.client.models.ChatUserPresencePropertiesPatch](docs/ChatUserPresencePropertiesPatch.md)
+ - [org.openapitools.client.models.ChatUserProperties](docs/ChatUserProperties.md)
+ - [org.openapitools.client.models.ChatUserPropertiesPatch](docs/ChatUserPropertiesPatch.md)
+ - [org.openapitools.client.models.ChatUserRepliedToChatUserMessageNotificationData](docs/ChatUserRepliedToChatUserMessageNotificationData.md)
+ - [org.openapitools.client.models.ChatUserResource](docs/ChatUserResource.md)
+ - [org.openapitools.client.models.ChatUserSentChatUserMessageNotificationData](docs/ChatUserSentChatUserMessageNotificationData.md)
+ - [org.openapitools.client.models.ChatUserSessionProperties](docs/ChatUserSessionProperties.md)
+ - [org.openapitools.client.models.ChatUserSessionResource](docs/ChatUserSessionResource.md)
+ - [org.openapitools.client.models.ChatUserUsernameReference](docs/ChatUserUsernameReference.md)
+ - [org.openapitools.client.models.CreateChannelGenericEventResource](docs/CreateChannelGenericEventResource.md)
+ - [org.openapitools.client.models.CreateChannelInviteResource](docs/CreateChannelInviteResource.md)
+ - [org.openapitools.client.models.CreateChannelRequest](docs/CreateChannelRequest.md)
+ - [org.openapitools.client.models.CreateChannelResource](docs/CreateChannelResource.md)
+ - [org.openapitools.client.models.CreateChatFunctionResource](docs/CreateChatFunctionResource.md)
+ - [org.openapitools.client.models.CreateChatFunctionVersionResource](docs/CreateChatFunctionVersionResource.md)
+ - [org.openapitools.client.models.CreateDelegatedReplyThreadKeystrokesResource](docs/CreateDelegatedReplyThreadKeystrokesResource.md)
+ - [org.openapitools.client.models.CreateDirectChannelResource](docs/CreateDirectChannelResource.md)
+ - [org.openapitools.client.models.CreateExternalFileProperties](docs/CreateExternalFileProperties.md)
+ - [org.openapitools.client.models.CreateFileMessageResource](docs/CreateFileMessageResource.md)
+ - [org.openapitools.client.models.CreateMessageResource](docs/CreateMessageResource.md)
+ - [org.openapitools.client.models.CreatePersonChatUserResource](docs/CreatePersonChatUserResource.md)
+ - [org.openapitools.client.models.CreatePrivateChannelResource](docs/CreatePrivateChannelResource.md)
+ - [org.openapitools.client.models.CreatePublicChannelResource](docs/CreatePublicChannelResource.md)
+ - [org.openapitools.client.models.CreateTextMessageResource](docs/CreateTextMessageResource.md)
+ - [org.openapitools.client.models.CursorPageMetadata](docs/CursorPageMetadata.md)
+ - [org.openapitools.client.models.CursorPagedModelMessageResource](docs/CursorPagedModelMessageResource.md)
+ - [org.openapitools.client.models.CursorPagedModelMessageResourceEmbedded](docs/CursorPagedModelMessageResourceEmbedded.md)
+ - [org.openapitools.client.models.CursorPagedModelNotificationResource](docs/CursorPagedModelNotificationResource.md)
+ - [org.openapitools.client.models.CursorPagedModelNotificationResourceEmbedded](docs/CursorPagedModelNotificationResourceEmbedded.md)
+ - [org.openapitools.client.models.DirectChannelImport](docs/DirectChannelImport.md)
+ - [org.openapitools.client.models.DirectChannelProperties](docs/DirectChannelProperties.md)
+ - [org.openapitools.client.models.DirectChannelResource](docs/DirectChannelResource.md)
+ - [org.openapitools.client.models.EmojiProperties](docs/EmojiProperties.md)
+ - [org.openapitools.client.models.FileChatUserMessageProperties](docs/FileChatUserMessageProperties.md)
+ - [org.openapitools.client.models.FileChatUserMessageResource](docs/FileChatUserMessageResource.md)
+ - [org.openapitools.client.models.FileImport](docs/FileImport.md)
+ - [org.openapitools.client.models.FileProperties](docs/FileProperties.md)
+ - [org.openapitools.client.models.FileSystemMessageProperties](docs/FileSystemMessageProperties.md)
+ - [org.openapitools.client.models.FileSystemMessageResource](docs/FileSystemMessageResource.md)
+ - [org.openapitools.client.models.GroupChannelImport](docs/GroupChannelImport.md)
+ - [org.openapitools.client.models.Link](docs/Link.md)
+ - [org.openapitools.client.models.MessageImport](docs/MessageImport.md)
+ - [org.openapitools.client.models.MessageLinkPreviewImageProperties](docs/MessageLinkPreviewImageProperties.md)
+ - [org.openapitools.client.models.MessageLinkPreviewProperties](docs/MessageLinkPreviewProperties.md)
+ - [org.openapitools.client.models.MessageLinkProperties](docs/MessageLinkProperties.md)
+ - [org.openapitools.client.models.MessageMentionChannelProperties](docs/MessageMentionChannelProperties.md)
+ - [org.openapitools.client.models.MessageMentionProperties](docs/MessageMentionProperties.md)
+ - [org.openapitools.client.models.MessageProperties](docs/MessageProperties.md)
+ - [org.openapitools.client.models.MessagePropertiesPatch](docs/MessagePropertiesPatch.md)
+ - [org.openapitools.client.models.MessageReactionsSummaryProperties](docs/MessageReactionsSummaryProperties.md)
+ - [org.openapitools.client.models.MessageReadReceiptResource](docs/MessageReadReceiptResource.md)
+ - [org.openapitools.client.models.MessageResource](docs/MessageResource.md)
+ - [org.openapitools.client.models.NotificationData](docs/NotificationData.md)
+ - [org.openapitools.client.models.NotificationResource](docs/NotificationResource.md)
+ - [org.openapitools.client.models.NotificationResourceChannel](docs/NotificationResourceChannel.md)
+ - [org.openapitools.client.models.PageMetadata](docs/PageMetadata.md)
+ - [org.openapitools.client.models.PagedModelApplicationJobResource](docs/PagedModelApplicationJobResource.md)
+ - [org.openapitools.client.models.PagedModelApplicationJobResourceEmbedded](docs/PagedModelApplicationJobResourceEmbedded.md)
+ - [org.openapitools.client.models.PagedModelChannelInviteResource](docs/PagedModelChannelInviteResource.md)
+ - [org.openapitools.client.models.PagedModelChannelInviteResourceEmbedded](docs/PagedModelChannelInviteResourceEmbedded.md)
+ - [org.openapitools.client.models.PagedModelChannelMembershipResource](docs/PagedModelChannelMembershipResource.md)
+ - [org.openapitools.client.models.PagedModelChannelMembershipResourceEmbedded](docs/PagedModelChannelMembershipResourceEmbedded.md)
+ - [org.openapitools.client.models.PagedModelChannelResource](docs/PagedModelChannelResource.md)
+ - [org.openapitools.client.models.PagedModelChannelResourceEmbedded](docs/PagedModelChannelResourceEmbedded.md)
+ - [org.openapitools.client.models.PagedModelChatFunctionInvocationResource](docs/PagedModelChatFunctionInvocationResource.md)
+ - [org.openapitools.client.models.PagedModelChatFunctionInvocationResourceEmbedded](docs/PagedModelChatFunctionInvocationResourceEmbedded.md)
+ - [org.openapitools.client.models.PagedModelChatFunctionResource](docs/PagedModelChatFunctionResource.md)
+ - [org.openapitools.client.models.PagedModelChatFunctionResourceEmbedded](docs/PagedModelChatFunctionResourceEmbedded.md)
+ - [org.openapitools.client.models.PagedModelChatFunctionVersionResource](docs/PagedModelChatFunctionVersionResource.md)
+ - [org.openapitools.client.models.PagedModelChatFunctionVersionResourceEmbedded](docs/PagedModelChatFunctionVersionResourceEmbedded.md)
+ - [org.openapitools.client.models.PagedModelChatSessionResource](docs/PagedModelChatSessionResource.md)
+ - [org.openapitools.client.models.PagedModelChatSessionResourceEmbedded](docs/PagedModelChatSessionResourceEmbedded.md)
+ - [org.openapitools.client.models.PagedModelChatUserResource](docs/PagedModelChatUserResource.md)
+ - [org.openapitools.client.models.PagedModelChatUserResourceEmbedded](docs/PagedModelChatUserResourceEmbedded.md)
+ - [org.openapitools.client.models.PagedModelChatUserSessionResource](docs/PagedModelChatUserSessionResource.md)
+ - [org.openapitools.client.models.PagedModelChatUserSessionResourceEmbedded](docs/PagedModelChatUserSessionResourceEmbedded.md)
+ - [org.openapitools.client.models.PagedModelMessageReadReceiptResource](docs/PagedModelMessageReadReceiptResource.md)
+ - [org.openapitools.client.models.PagedModelMessageReadReceiptResourceEmbedded](docs/PagedModelMessageReadReceiptResourceEmbedded.md)
+ - [org.openapitools.client.models.PrivateChannelImport](docs/PrivateChannelImport.md)
+ - [org.openapitools.client.models.PrivateChannelProperties](docs/PrivateChannelProperties.md)
+ - [org.openapitools.client.models.PrivateChannelResource](docs/PrivateChannelResource.md)
+ - [org.openapitools.client.models.PublicChannelImport](docs/PublicChannelImport.md)
+ - [org.openapitools.client.models.PublicChannelProperties](docs/PublicChannelProperties.md)
+ - [org.openapitools.client.models.PublicChannelResource](docs/PublicChannelResource.md)
+ - [org.openapitools.client.models.ReplyThreadKeystrokesResource](docs/ReplyThreadKeystrokesResource.md)
+ - [org.openapitools.client.models.ReplyThreadResource](docs/ReplyThreadResource.md)
+ - [org.openapitools.client.models.SecretResource](docs/SecretResource.md)
+ - [org.openapitools.client.models.SendChannelMessageRequest](docs/SendChannelMessageRequest.md)
+ - [org.openapitools.client.models.SystemMessageResource](docs/SystemMessageResource.md)
+ - [org.openapitools.client.models.TextChatUserMessageImport](docs/TextChatUserMessageImport.md)
+ - [org.openapitools.client.models.TextChatUserMessageProperties](docs/TextChatUserMessageProperties.md)
+ - [org.openapitools.client.models.TextChatUserMessageResource](docs/TextChatUserMessageResource.md)
+ - [org.openapitools.client.models.TextMessageImport](docs/TextMessageImport.md)
+ - [org.openapitools.client.models.TextMessageResource](docs/TextMessageResource.md)
+ - [org.openapitools.client.models.TextSystemMessageImport](docs/TextSystemMessageImport.md)
+ - [org.openapitools.client.models.TextSystemMessageProperties](docs/TextSystemMessageProperties.md)
+ - [org.openapitools.client.models.TextSystemMessageResource](docs/TextSystemMessageResource.md)
+
+
+
+## Documentation for Authorization
+
+
+Authentication schemes defined for the API:
+
+### application_authorization
+
+- **Type**: OAuth
+- **Flow**: application
+- **Authorization URL**:
+- **Scopes**:
+ - create:*: Create application resources
+ - read:*: Read application resources
+ - update:*: Update application resources
+ - delete:*: Delete application resources
+
diff --git a/examples/android-example/models/build.gradle b/examples/android-example/models/build.gradle
new file mode 100644
index 00000000..ef3c9f3e
--- /dev/null
+++ b/examples/android-example/models/build.gradle
@@ -0,0 +1,62 @@
+group 'org.openapitools'
+version '1.0.0'
+
+wrapper {
+ gradleVersion = '7.5'
+ distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
+}
+
+buildscript {
+ ext.kotlin_version = '1.8.10'
+ ext.spotless_version = "6.13.0"
+
+ repositories {
+ maven { url "https://repo1.maven.org/maven2" }
+ }
+ dependencies {
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath "com.diffplug.spotless:spotless-plugin-gradle:$spotless_version"
+ }
+}
+
+apply plugin: 'kotlin'
+apply plugin: 'maven-publish'
+apply plugin: 'com.diffplug.spotless'
+
+repositories {
+ maven { url "https://repo1.maven.org/maven2" }
+}
+
+// Use spotless plugin to automatically format code, remove unused import, etc
+// To apply changes directly to the file, run `gradlew spotlessApply`
+// Ref: https://github.com/diffplug/spotless/tree/main/plugin-gradle
+spotless {
+ // comment out below to run spotless as part of the `check` task
+ enforceCheck false
+
+ format 'misc', {
+ // define the files (e.g. '*.gradle', '*.md') to apply `misc` to
+ target '.gitignore'
+
+ // define the steps to apply to those files
+ trimTrailingWhitespace()
+ indentWithSpaces() // Takes an integer argument if you don't like 4
+ endWithNewline()
+ }
+ kotlin {
+ ktfmt()
+ }
+}
+
+test {
+ useJUnitPlatform()
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
+ implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+ implementation "com.squareup.moshi:moshi-kotlin:1.14.0"
+ implementation "com.squareup.moshi:moshi-adapters:1.14.0"
+ implementation "com.squareup.okhttp3:okhttp:4.11.0"
+ testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2"
+}
diff --git a/examples/android-example/models/build/kotlin/compileKotlin/cacheable/dirty-sources.txt b/examples/android-example/models/build/kotlin/compileKotlin/cacheable/dirty-sources.txt
new file mode 100644
index 00000000..ee0bd05f
--- /dev/null
+++ b/examples/android-example/models/build/kotlin/compileKotlin/cacheable/dirty-sources.txt
@@ -0,0 +1,160 @@
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/UserSessionsApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChannelMembershipResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/FunctionsApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChannelInviteResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CursorPagedModelNotificationResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ApplicationResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserPresencePropertiesPatch.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatRuntimeScriptProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatFunctionChatRuntimeProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/ChannelsApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/PartConfig.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessagePropertiesPatch.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/NotificationResourceChannel.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChannelMembershipImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PublicChannelResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PrivateChannelProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChannelMessageMentionProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChannelGenericEventResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChannelResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/SystemMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/TextChatUserMessageProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/AnalyticsApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserIdReference.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessageProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ReplyThreadKeystrokesResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PublicChannelImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/TextMessageImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserMessageMentionProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserMentionedChannelNotificationData.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateChatFunctionResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatRuntimeProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateDelegatedReplyThreadKeystrokesResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChannelResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessageReactionsSummaryProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChannelImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/FileImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ApplicationSettingsProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/ChatSessionsApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelMessageReadReceiptResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatSessionResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/SecretResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/TextMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessageReadReceiptResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/FunctionVersionsApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/MessagesApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CursorPagedModelNotificationResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ApplicationSettingsResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChannelInviteResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ApplicationSentSystemMessageNotificationData.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/FileSystemMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessageLinkPreviewProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreatePersonChatUserResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatSessionResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateChannelInviteResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChannelPropertiesPatch.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionVersionResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatUserSessionResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserMentionedChatUserNotificationData.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/DirectChannelProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/NotificationData.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/DirectChannelResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PageMetadata.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserPresenceProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatUserResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatRuntimeDependencyProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateChannelRequest.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ReplyThreadResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CursorPagedModelMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionVersionResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PrivateChannelResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserUsernameReference.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/TextSystemMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/FileChatUserMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/FileProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessageLinkProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/FileChatUserMessageProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/DirectChannelImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChannelMembershipResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PublicChannelProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatUserResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/SendChannelMessageRequest.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/TextSystemMessageProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserPropertiesPatch.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/GroupChannelImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/TextChatUserMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatUserSessionResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/RuntimeApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/ImportsApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/TextChatUserMessageImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessageMentionProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessageImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateChannelGenericEventResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionInvocationResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessageMentionChannelProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/AddChannelMemberRequest.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/Link.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ApplicationJobResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatFunctionResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreatePrivateChannelResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChannelProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserSentChatUserMessageNotificationData.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserSessionResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/UsersApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/FileSystemMessageProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/JobsApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CursorPagedModelMessageResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateFileMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatFunctionVersionResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ApiError.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CursorPageMetadata.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatSessionResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/EmojiProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatFunctionInvocationResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreatePublicChannelResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/TextSystemMessageImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatRuntimeResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserSessionProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateTextMessageResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChannelResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChatFunctionInvocationResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelApplicationJobResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/AuthenticationError.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/ThreadsApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateDirectChannelResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PrivateChannelImport.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateExternalFileProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelChannelInviteResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateChannelResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelApplicationJobResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/PagedModelMessageReadReceiptResourceEmbedded.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/NotificationResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChannelMembershipResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/apis/ApplicationApi.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/MessageLinkPreviewImageProperties.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/CreateChatFunctionVersionResource.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/models/ChatUserRepliedToChatUserMessageNotificationData.kt
+/Users/alexnguyen/Documents/GitHub/chat-ui-android/models/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt
\ No newline at end of file
diff --git a/examples/android-example/models/build/kotlin/compileKotlin/local-state/build-history.bin b/examples/android-example/models/build/kotlin/compileKotlin/local-state/build-history.bin
new file mode 100644
index 00000000..d20b8e1a
Binary files /dev/null and b/examples/android-example/models/build/kotlin/compileKotlin/local-state/build-history.bin differ
diff --git a/examples/android-example/models/chatkitty.json b/examples/android-example/models/chatkitty.json
new file mode 100644
index 00000000..9b21df58
--- /dev/null
+++ b/examples/android-example/models/chatkitty.json
@@ -0,0 +1 @@
+{"openapi":"3.0.1","info":{"title":"ChatKitty Platform API","description":"OpenAPI specification (OAS) for the ChatKitty Platform API.\nSee the Interactive Docs to try ChatKitty API methods without writing code,\nand get the complete schema of resources exposed by the API.","termsOfService":"https://chatkitty.com/terms-of-service","contact":{"name":"Support","url":"mailto:support@chatkitty.com"},"license":{"name":"MIT","url":"https://opensource.org/licenses/MIT"},"version":"2.41.9"},"externalDocs":{"description":"Platform API Interactive Docs","url":"https://api.chatkitty.com/docs/reference"},"servers":[{"url":"https://api.chatkitty.com"}],"tags":[{"name":"analytics","description":"Export analytics data from your ChatKitty application","x-displayName":"Analytics"},{"name":"application","description":"Configure and manage your ChatKitty application","x-displayName":"Application"},{"name":"channels","description":"Operations to create, retrieve, update and delete channels","x-displayName":"Channels"},{"name":"chat-sessions","description":"Chat session operations","x-displayName":"Chat Sessions"},{"name":"function-versions","description":"Chat function version operations","x-displayName":"Chat Function Versions"},{"name":"functions","description":"Chat function operations","x-displayName":"Chat Functions"},{"name":"imports","description":"Import user, channel, message data into your ChatKitty application","x-displayName":"Imports"},{"name":"jobs","description":"Retrieve information about long running scheduled jobs like imports and exports","x-displayName":"Jobs"},{"name":"messages","description":"Operations to retrieve, update and delete messages","x-displayName":"Messages"},{"name":"runtime","description":"Chat runtime operations","x-displayName":"Chat Runtime"},{"name":"threads","description":"Message thread operations","x-displayName":"Threads"},{"name":"user-sessions","description":"User session operations","x-displayName":"User Sessions"},{"name":"users","description":"User operations","x-displayName":"Users"}],"paths":{"/v1/analytics/messages":{"post":{"tags":["analytics"],"summary":"Export message analytics","description":"Batch export message analytics data","operationId":"export-message-analytics","responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"202":{"description":"Export job accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":203,"type":"MESSAGE_IMPORT","state":"PENDING","createdTime":"2022-04-28T05:30:44.265Z","endedTime":"2022-04-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/203"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":203,"type":"MESSAGE_IMPORT","state":"PENDING","createdTime":"2022-04-28T05:30:44.265Z","endedTime":"2022-04-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/203"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":203,"type":"MESSAGE_IMPORT","state":"PENDING","createdTime":"2022-04-28T05:30:44.265Z","endedTime":"2022-04-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/203"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}}}}},"security":[{"application_authorization":["read:message"]}],"x-codeSamples":[]}},"/v1/analytics/users":{"post":{"tags":["analytics"],"summary":"Export user analytics","description":"Batch export user analytics data","operationId":"export-user-analytics","responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"202":{"description":"Export job accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":202,"type":"USER_IMPORT","state":"PENDING","createdTime":"2022-03-28T05:30:44.265Z","endedTime":"2022-03-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/202"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":202,"type":"USER_IMPORT","state":"PENDING","createdTime":"2022-03-28T05:30:44.265Z","endedTime":"2022-03-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/202"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":202,"type":"USER_IMPORT","state":"PENDING","createdTime":"2022-03-28T05:30:44.265Z","endedTime":"2022-03-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/202"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}}}}},"security":[{"application_authorization":["read:user"]}],"x-codeSamples":[]}},"/v1/application":{"get":{"tags":["application"],"summary":"Retrieve the authenticated application","description":"Returns the ChatKitty application associated with the authentication credentials used.\n\nYou must use an **OAuth V2 Bearer token** to access this endpoint.","operationId":"retrieve-authenticated-application","responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}}}}},"security":[{"application_authorization":["read:application"]}],"x-codeSamples":[{"lang":"cURL","source":"curl -X 'GET' \\\n 'https://api.chatkitty.com/v1/application' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Application.retrieveAuthenticatedApplication()\n"}]}},"/v1/application/settings":{"get":{"tags":["application"],"summary":"Retrieve the authenticated application settings","description":"Returns the current settings configuring this application","operationId":"retrieve-authenticated-application-settings","responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationSettingsResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationSettingsResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationSettingsResource"}}}}},"security":[{"application_authorization":["read:application"]}],"x-codeSamples":[{"lang":"cURL","source":"curl -X 'GET' \\\n 'https://api.chatkitty.com/v1/application/settings' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Application.retrieveAuthenticatedApplicationSettings()\n"}]},"put":{"tags":["application"],"summary":"Update the authenticated application settings","description":"Update the settings configuring this application","operationId":"update-authenticated-application-settings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationSettingsProperties"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationSettingsResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationSettingsResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationSettingsResource"}}}}},"security":[{"application_authorization":["update:application"]}],"x-codeSamples":[{"lang":"cURL","source":"curl -X 'PUT' \\\n 'https://api.chatkitty.com/v1/application/settings' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"guestUsers\": \"DISABLED\",\n \"userCreatedChannels\": \"DISABLED\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Application.updateAuthenticatedApplicationSettings({\n guestUsers: 'DISABLED',\n userCreatedChannels: 'DISABLED'\n})\n"}]}},"/v1/channels":{"get":{"tags":["channels"],"summary":"List channels","description":"Returns a page of channels belonging to this application","operationId":"list-channels","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"type","in":"query","description":"Filters by channel type","required":false,"schema":{"type":"string","description":"The type of this channel","enum":["DIRECT","PUBLIC","PRIVATE"]}},{"name":"members","in":"query","description":"Filters by channel members using their usernames","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string"}}},{"name":"startTime","in":"query","description":"Filters for channels created within a time range: start time","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"endTime","in":"query","description":"Filters for channels created within a time range: end time","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"properties","in":"query","description":"Filters by channel custom properties","required":false,"schema":{"type":"string"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelResource"}}}}},"security":[{"application_authorization":["read:channel"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/channels?page=0&size=5' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.listChannels()\n"}]},"post":{"tags":["channels"],"summary":"Create a channel","description":"Creates a new channel or returns an equivalent existing channel","operationId":"create-channel","requestBody":{"content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"PUBLIC":"#/components/schemas/CreatePublicChannelResource","PRIVATE":"#/components/schemas/CreatePrivateChannelResource","DIRECT":"#/components/schemas/CreateDirectChannelResource"}},"oneOf":[{"$ref":"#/components/schemas/CreateDirectChannelResource"},{"$ref":"#/components/schemas/CreatePrivateChannelResource"},{"$ref":"#/components/schemas/CreatePublicChannelResource"}]}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}}}}},"security":[{"application_authorization":["create:channel"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/channels' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"type\": \"PUBLIC\",\n \"name\": \"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.createChannel({\n type: \"PUBLIC\",\n name: \"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7\"\n})\n"}]}},"/v1/channels/{id}":{"get":{"tags":["channels"],"summary":"Retrieve a channel","description":"Returns a channel by ID","operationId":"retrieve-channel","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}}}}},"security":[{"application_authorization":["read:channel"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/channels/55913' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.retrieveChannel(55913)\n"}]},"delete":{"tags":["channels"],"summary":"Delete a channel","description":"Deletes a channel by ID","operationId":"delete-channel","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}}}}},"security":[{"application_authorization":["read:channel","delete:channel"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'DELETE' \\\n 'https://api.chatkitty.com/v1/channels/55913' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.deleteChannel(55913)\n"}]},"patch":{"tags":["channels"],"summary":"Update a channel","description":"Updates a channel properties","operationId":"update-channel","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json+merge-patch":{"schema":{"$ref":"#/components/schemas/ChannelPropertiesPatch"}}}},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}}}}},"security":[{"application_authorization":["read:channel","update:channel"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'PATCH' \\\n 'https://api.chatkitty.com/v1/channels/55913' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json+merge-patch' \\\n -d '{\n \"displayName\": \"A chatty channel\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.updateChannel(55913, {\n displayName: \"A chatty channel\"\n})\n"}]}},"/v1/channels/{id}/events":{"post":{"tags":["channels"],"summary":"Send a channel event","description":"Sends a custom channel event","operationId":"send-channel-event","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChannelGenericEventResource"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelGenericEventResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChannelGenericEventResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChannelGenericEventResource"}}}}},"security":[{"application_authorization":["read:channel","create:channel_event"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/channels/55913/events' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"type\": \"My Custom Event\",\n \"properties\": {\n \"payload\": \"Boom!\",\n \"stuff\": {\n \"favoriteNumber\": 42,\n \"favoriteMovie\": \"Lilo and Stitch\"\n }\n }\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.sendChannelEvent(55913, {\n type: \"My Custom Event\",\n properties: {\n payload: \"Boom!\",\n stuff: {\n \"favoriteNumber\": 42,\n \"favoriteMovie\": \"Lilo and Stitch\"\n }\n }\n})\n"}]}},"/v1/channels/{id}/invites":{"get":{"tags":["channels"],"summary":"List channel invites","description":"Returns a page of invites sent to join this channel","operationId":"list-channel-invites","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelInviteResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelInviteResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelInviteResource"}}}}},"security":[{"application_authorization":["read:channel_invite"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/channels/67026/invites?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.listChannelInvites(67026)\n"}]},"post":{"tags":["channels"],"summary":"Send a channel invite","description":"Sends a channel invite to user","operationId":"send-channel-invite","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChannelInviteResource"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelInviteResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChannelInviteResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChannelInviteResource"}}}}},"security":[{"application_authorization":["read:channel","read:user","create:channel_invite"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/channels/67026/invites' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n user: {\n \"username\": \"jane@chatkitty.com\"\n }\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.sendChannelInvite(67026, {\n user: {\n username: \"jane@chatkitty.com\"\n }\n})\n"}]}},"/v1/channels/{id}/keystrokes":{"post":{"tags":["channels"],"summary":"Send channel keystrokes","description":"Sends keystrokes in this channel on behalf of a user","operationId":"send-channel-keystrokes","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDelegatedReplyThreadKeystrokesResource"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyThreadKeystrokesResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ReplyThreadKeystrokesResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ReplyThreadKeystrokesResource"}}}}},"security":[{"application_authorization":["read:channel","read:user","create:keystrokes"]}],"x-codeSamples":[]}},"/v1/channels/{id}/members":{"get":{"tags":["channels"],"summary":"List a channel's members","description":"Returns a page of channel members","operationId":"list-channel-members","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}}}}},"security":[{"application_authorization":["read:channel","read:channel_membership"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/channels/67026/members?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.listChannelMembers(67026)\n"}]},"post":{"tags":["channels"],"summary":"Add a channel member","description":"Makes a user a group channel member","operationId":"add-channel-member","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ChatUserIdReference"},{"$ref":"#/components/schemas/ChatUserUsernameReference"}]}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}}}}},"security":[{"application_authorization":["read:channel","read:user","create:channel_membership"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/channels/55913/members' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"username\": \"jane@chatkitty.com\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.addChannelMember(55913, {\n username: \"jane@chatkitty.com\"\n})\n"}]}},"/v1/channels/{id}/members/{user_id}":{"delete":{"tags":["channels"],"summary":"Remove a channel member","description":"Removes a member from a group channel","operationId":"remove-channel-member","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"user_id","in":"path","description":"User ID of member to be removed","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}}}}},"security":[{"application_authorization":["read:channel","read:user","delete:channel_membership"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'DELETE' \\\n 'https://api.chatkitty.com/v1/channels/55913/members/14503' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.removeChannelMember(55913, 14503)\n"}]}},"/v1/channels/{id}/memberships":{"get":{"tags":["channels"],"summary":"List channel memberships","description":"Returns a page of channel membership info for this channel","operationId":"list-channel-memberships","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelMembershipResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelMembershipResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelMembershipResource"}}}}},"security":[{"application_authorization":["read:channel","read:channel_membership"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/channels/702/memberships?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.listChannelMemberships(702)\n"}]}},"/v1/channels/{id}/messages":{"get":{"tags":["channels"],"summary":"List channel messages","description":"Returns a page of messages sent in this channel","operationId":"list-channel-messages","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"start","in":"query","description":"Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"next","in":"query","description":"Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"relation","in":"query","description":"Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages","required":false,"schema":{"type":"string","enum":["SELF","PREVIOUS","NEXT"]}},{"name":"username","in":"query","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}}}}},"security":[{"application_authorization":["read:channel","read:message"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/channels/702/messages' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.listChannelMessages(702)\n"}]},"post":{"tags":["channels"],"summary":"Send a channel message","description":"Sends a message in this channel as the system or on behalf of a user","operationId":"send-channel-message","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"TEXT":"#/components/schemas/CreateTextMessageResource","FILE":"#/components/schemas/CreateFileMessageResource"}},"oneOf":[{"$ref":"#/components/schemas/CreateFileMessageResource"},{"$ref":"#/components/schemas/CreateTextMessageResource"}]}},"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"},"groupTag":{"type":"string"},"username":{"type":"string"},"properties":{"type":"string"}}}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/MessageResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/MessageResource"}}}}},"security":[{"application_authorization":["read:channel","read:user","create:message"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/channels/702/messages' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"type\": \"TEXT\",\n \"body\": \"🌞\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.sendChannelMessage(702, {\n \"type\": \"TEXT\",\n \"body\": \"🌞\"\n})\n"}]}},"/v1/channels/{id}/moderators":{"get":{"tags":["channels"],"summary":"Lists a channel's moderators","description":"Returns a page of channel moderators","operationId":"list-channel-moderators","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}}}}},"security":[{"application_authorization":["read:channel","read:channel_moderator"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/channels/67026/moderators?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.listChannelModerators(67026)\n"}]},"post":{"tags":["channels"],"summary":"Add a channel moderator","description":"Makes a user a group channel moderator","operationId":"add-channel-moderator","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ChatUserIdReference"},{"$ref":"#/components/schemas/ChatUserUsernameReference"}]}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}}}}},"security":[{"application_authorization":["read:channel","read:user","read:channel_membership","create:channel_moderator"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/channels/55913/moderators' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"username\": \"jane@chatkitty.com\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.addChannelModerator(55913, {\n username: \"jane@chatkitty.com\"\n})\n"}]}},"/v1/channels/{id}/moderators/{user_id}":{"delete":{"tags":["channels"],"summary":"Remove a channel moderator","description":"Removes a moderator from a group channel","operationId":"remove-channel-moderator","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"user_id","in":"path","description":"User ID of moderator to be removed","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChannelResource"}}}}},"security":[{"application_authorization":["read:channel","read:user","delete:channel_moderator"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'DELETE' \\\n 'https://api.chatkitty.com/v1/channels/55913/moderators/14503' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.removeChannelModerator(55913, 14503)\n"}]}},"/v1/channels/{id}/participants":{"get":{"tags":["channels"],"summary":"List channel participants","description":"Returns a page of channel active participants: members that currently online","operationId":"list-channel-participants","parameters":[{"name":"id","in":"path","description":"Channel ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}}}}},"security":[{"application_authorization":["read:channel","read:chat_session"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/channels/702/participants?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Channels.listChannelParticipants(702)\n"}]}},"/v1/chat-sessions":{"get":{"tags":["chat-sessions"],"summary":"List chat sessions","description":"Returns a page of chat sessions belonging to this application","operationId":"list-chat-sessions","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"state","in":"query","description":"Filters by state","required":false,"schema":{"type":"string","enum":["ACTIVE","ENDED"]}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChatSessionResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatSessionResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatSessionResource"}}}}},"security":[{"application_authorization":["read:chat_session"]}],"x-codeSamples":[]}},"/v1/function-versions/{id}":{"get":{"tags":["function-versions"],"summary":"Retrieve a chat function version","description":"Returns a chat function version by ID","operationId":"retrieve-function-version","parameters":[{"name":"id","in":"path","description":"Chat function version ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatFunctionVersionResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatFunctionVersionResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatFunctionVersionResource"}}}}},"security":[{"application_authorization":["read:function_version"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/function-versions/13515' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.FunctionVersions.retrieveFunctionVersion(13515)\n"}]}},"/v1/functions/{id}":{"get":{"tags":["functions"],"summary":"Retrieve a chat function","description":"Returns a chat function by ID","operationId":"retrieve-function","parameters":[{"name":"id","in":"path","description":"Chat function ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatFunctionResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatFunctionResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatFunctionResource"}}}}},"security":[{"application_authorization":["read:function"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/functions/1' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Functions.retrieveFunction(1)\n\n\n"}]}},"/v1/functions/{id}/current-version":{"get":{"tags":["functions"],"summary":"Retrieve chat function current version","description":"Returns the version of this chat function currently deployed","operationId":"retrieve-function-current-version","parameters":[{"name":"id","in":"path","description":"Chat function ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatFunctionVersionResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatFunctionVersionResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatFunctionVersionResource"}}}}},"security":[{"application_authorization":["read:function","read:function_version"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/functions/13515/current-version' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Functions.retrieveFunctionCurrentVersion(13515)\n\n\n"}]}},"/v1/functions/{id}/invocations":{"get":{"tags":["functions"],"summary":"List chat function invocations","description":"Returns a page of invocations of this chat function. A log of previous runs of the function","operationId":"list-function-invocations","parameters":[{"name":"id","in":"path","description":"Chat function ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChatFunctionInvocationResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatFunctionInvocationResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatFunctionInvocationResource"}}}}},"security":[{"application_authorization":["read:function","read:function_invocation"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/functions/1/invocations?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Functions.listFunctionInvocations(1)\n"}]}},"/v1/functions/{id}/versions":{"get":{"tags":["functions"],"summary":"List chat function versions","description":"Returns a page of versions of this chat function","operationId":"list-function-versions","parameters":[{"name":"id","in":"path","description":"Chat function ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChatFunctionVersionResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatFunctionVersionResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatFunctionVersionResource"}}}}},"security":[{"application_authorization":["read:function","read:function_version"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/functions/1/versions?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\n\nawait chatkitty.Functions.listFunctionVersions(1)\n\n"}]},"post":{"tags":["functions"],"summary":"Create a chat function version","description":"Creates a new version of this chat function","operationId":"create-function-version","parameters":[{"name":"id","in":"path","description":"Chat function ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChatFunctionVersionResource"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatFunctionVersionResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatFunctionVersionResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatFunctionVersionResource"}}}}},"security":[{"application_authorization":["read:function","create:function_version"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/functions/1/versions' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"handlerScript\": \"const logs = [];\\n\\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\\n let email = event.username;\\n let displayName = event.authParams.displayName || email;\\n\\n let userApi = context.getUserApi();\\n\\n logs.push('\\''Hello '\\'' + event.username);\\n\\n await userApi.getUserExists(email)\\n .catch(async () => {\\n let user = await userApi.createUser(\\n {\\n '\\''name'\\'': email,\\n '\\''displayName'\\'': displayName\\n }\\n );\\n\\n let channelApi = context.getChannelApi();\\n\\n await channelApi.createChannelMember(702, { '\\''id'\\'': user.data.id });\\n });\\n\\n return logs;\\n}\"\n}\n\n'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\n\nawait chatkitty.Functions.createFunctionVersion(13515,{\n \"handlerScript\": \"const logs = [];\\n\\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\\n let email = event.username;\\n let displayName = event.authParams.displayName || email;\\n\\n let userApi = context.getUserApi();\\n\\n logs.push('Hello ' + event.username);\\n\\n await userApi.getUserExists(email)\\n .catch(async () => {\\n let user = await userApi.createUser(\\n {\\n 'name': email,\\n 'displayName': displayName\\n }\\n );\\n\\n let channelApi = context.getChannelApi();\\n\\n await channelApi.createChannelMember(702, { 'id': user.data.id });\\n });\\n\\n return logs;\\n}\"\n})\n"}]}},"/v1/imports/channels":{"post":{"tags":["imports"],"summary":"Import channels","description":"Batch imports channels from a JSON array file","externalDocs":{"description":"Learn more about importing channels and the channel import JSON array file format","url":"https://chatkitty.com/docs/concepts/imports#importing-channels"},"operationId":"import-channels","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"JSON array file with channels","format":"binary"}}}}}},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"202":{"description":"Import job accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":53,"type":"CHANNEL_IMPORT","state":"PENDING","createdTime":"2021-09-28T05:30:44.265Z","endedTime":"2021-09-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/53"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":53,"type":"CHANNEL_IMPORT","state":"PENDING","createdTime":"2021-09-28T05:30:44.265Z","endedTime":"2021-09-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/53"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":53,"type":"CHANNEL_IMPORT","state":"PENDING","createdTime":"2021-09-28T05:30:44.265Z","endedTime":"2021-09-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/53"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}}}}},"security":[{"application_authorization":["create:channel"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/imports/channels' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: multipart/form-data' \\\n -F 'file=@channels_import_file.json;type=application/json\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nconst file = new File(\n ['[{\"idempotencyKey\":\"unique-external-id\",\"type\":\"DIRECT\",\"members\":[\"jane@chatkitty.com\",\"john@chatkitty.com\"]}]'],\n \"import.json\",\n {\n type: \"application/json\"\n })\n\nawait chatkitty.Imports.importChannels(file)\n"}]}},"/v1/imports/channels/{id}/members":{"post":{"tags":["imports"],"summary":"Import channel members","description":"Batch imports channel members from a JSON array file","externalDocs":{"description":"Learn more about importing channel members and the channel member import JSON array file format","url":"https://chatkitty.com/docs/concepts/imports#importing-channel-members"},"operationId":"import-channel-members","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"JSON array file with user references to be added as members","format":"binary"}}}}}},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"202":{"description":"Import job accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":205,"type":"CHANNEL_MEMBERS_IMPORT","state":"PENDING","createdTime":"2022-05-28T05:30:44.265Z","endedTime":"2022-05-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/205"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":205,"type":"CHANNEL_MEMBERS_IMPORT","state":"PENDING","createdTime":"2022-05-28T05:30:44.265Z","endedTime":"2022-05-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/205"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":205,"type":"CHANNEL_MEMBERS_IMPORT","state":"PENDING","createdTime":"2022-05-28T05:30:44.265Z","endedTime":"2022-05-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/205"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}}}}},"security":[{"application_authorization":["create:channel_membership"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/imports/channels/1/members' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: multipart/form-data' \\\n -F 'file=@members_import_file.json;type=application/json\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nconst file = new File(\n ['[{\"idempotencyKey\":\"unique-external-id\",\"type\":\"DIRECT\",\"members\":[\"b2a6da08-88bf-4778-b993-7234e6d8a3ff\",\"c6f75947-af48-4893-a78e-0e0b9bd68580\"]}]'],\n \"import.json\",\n {\n type: \"application/json\"\n })\n\nawait chatkitty.Imports.importChannelMembers(1, [{\n idempotencyKey: \"123\",\n username: \"string\"\n}])\n"}]}},"/v1/imports/messages":{"post":{"tags":["imports"],"summary":"Import messages","description":"Batch imports messages from a JSON array file","externalDocs":{"description":"Learn more about importing messages and the message import JSON array file format","url":"https://chatkitty.com/docs/concepts/imports#importing-messages"},"operationId":"import-messages","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"JSON array file with messages","format":"binary"}}}}}},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"202":{"description":"Import job accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":203,"type":"MESSAGE_IMPORT","state":"PENDING","createdTime":"2022-04-28T05:30:44.265Z","endedTime":"2022-04-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/203"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":203,"type":"MESSAGE_IMPORT","state":"PENDING","createdTime":"2022-04-28T05:30:44.265Z","endedTime":"2022-04-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/203"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":203,"type":"MESSAGE_IMPORT","state":"PENDING","createdTime":"2022-04-28T05:30:44.265Z","endedTime":"2022-04-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/203"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}}}}},"security":[{"application_authorization":["create:message"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/imports/messages' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: multipart/form-data' \\\n -F 'file=@messages_import_file.json;type=application/json\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nconst file = new File(\n ['[{\"type\":\"TEXT\",\"body\":\"Hello, World!\"}]'],\n \"import.json\",\n {\n type: \"application/json\"\n })\n\nawait chatkitty.Imports.importMessages(file)\n"}]}},"/v1/imports/users":{"post":{"tags":["imports"],"summary":"Import users","description":"Batch imports users from a JSON array file","externalDocs":{"description":"Learn more about importing users and the user import JSON array file format","url":"https://chatkitty.com/docs/concepts/imports#importing-users"},"operationId":"import-users","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"JSON array file with users","format":"binary"}}}}}},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"202":{"description":"Import job accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":202,"type":"USER_IMPORT","state":"PENDING","createdTime":"2022-03-28T05:30:44.265Z","endedTime":"2022-03-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/202"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":202,"type":"USER_IMPORT","state":"PENDING","createdTime":"2022-03-28T05:30:44.265Z","endedTime":"2022-03-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/202"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"},"example":{"id":202,"type":"USER_IMPORT","state":"PENDING","createdTime":"2022-03-28T05:30:44.265Z","endedTime":"2022-03-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/202"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}}}}},"security":[{"application_authorization":["create:user"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/imports/users' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: multipart/form-data' \\\n -F 'file=@users_import_file.json;type=application/json\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nconst file = new File(\n ['[{name:\"jane@chatkitty.com\",displayName:\"JaneDoe\",isGuest:false,properties:{favoriteNumber:42}}]'],\n \"import.json\",\n {\n type: \"application/json\"\n })\n\n\nawait chatkitty.Imports.importUsers(file)\n"}]}},"/v1/jobs":{"get":{"tags":["jobs"],"summary":"List jobs","description":"Returns a page of jobs created for this application","operationId":"list-jobs","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"running","in":"query","description":"Filters for jobs currently running","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelApplicationJobResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelApplicationJobResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelApplicationJobResource"}}}}},"security":[{"application_authorization":["read:job"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/jobs' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Jobs.listJobs()\n"}]}},"/v1/jobs/{id}":{"get":{"tags":["jobs"],"summary":"Retrieve a job","description":"Returns a job by ID","operationId":"retrieve-job","parameters":[{"name":"id","in":"path","description":"Job ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationJobResource"}}}}},"security":[{"application_authorization":["read:job"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/jobs/1' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Jobs.retrieveJob(1)\n"}]}},"/v1/messages":{"get":{"tags":["messages"],"summary":"List messages","description":"Returns a page of messages belonging to this application","operationId":"list-messages","parameters":[{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"start","in":"query","description":"Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"next","in":"query","description":"Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"relation","in":"query","description":"Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages","required":false,"schema":{"type":"string","enum":["SELF","PREVIOUS","NEXT"]}},{"name":"username","in":"query","description":"Filters messages by a sender's username","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","description":"Filters text messages by text contained in the message body","required":false,"schema":{"type":"string"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}}}}},"security":[{"application_authorization":["read:message"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/messages' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Messages.listMessages()\n"}]},"delete":{"tags":["messages"],"summary":"Delete messages","description":"Deletes all messages belonging to this application","operationId":"delete-messages","responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}}}}},"security":[{"application_authorization":["read:message","delete:message"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'DELETE' \\\n 'https://api.chatkitty.com/v1/messages' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Messages.deleteMessages()\n"}]}},"/v1/messages/{id}":{"get":{"tags":["messages"],"summary":"Retrieve a message","description":"Returns a message by ID","operationId":"retrieve-message","parameters":[{"name":"id","in":"path","description":"Message ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/MessageResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/MessageResource"}}}}},"security":[{"application_authorization":["read:message"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/messages/44902' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Messages.retrieveMessage(44902)\n"}]},"delete":{"tags":["messages"],"summary":"Delete a message","description":"Deletes a message by ID","operationId":"delete-message","parameters":[{"name":"id","in":"path","description":"Message ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyThreadResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ReplyThreadResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ReplyThreadResource"}}}}},"security":[{"application_authorization":["read:message","delete:message"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'DELETE' \\\n 'https://api.chatkitty.com/v1/messages/67528' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Messages.deleteMessage(67528)\n\n"}]},"patch":{"tags":["messages"],"summary":"Update a message","description":"Updates a message properties","operationId":"update-message","parameters":[{"name":"id","in":"path","description":"Message ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json+merge-patch":{"schema":{"$ref":"#/components/schemas/MessagePropertiesPatch"}}}},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/MessageResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/MessageResource"}}}}},"security":[{"application_authorization":["read:message","update:message"]}],"x-codeSamples":[]}},"/v1/messages/{id}/read-receipts":{"get":{"tags":["messages"],"summary":"List message read receipts","description":"Returns a page of read receipts for this message","operationId":"list-message-read-receipts","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelMessageReadReceiptResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelMessageReadReceiptResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelMessageReadReceiptResource"}}}}},"security":[{"application_authorization":["read:message","read:read_receipt"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/messages/1/read-receipts?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Messages.listMessageReadReceipts(1)\n\n"}]}},"/v1/runtimes/nodejs":{"get":{"tags":["runtime"],"summary":"Retrieve NodeJS chat runtime","description":"Return this application's NodeJS chat runtime","operationId":"retrieve-nodejs-runtime","responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}}}}},"security":[{"application_authorization":["read:runtime","update:runtime"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/runtimes/nodejs' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Runtime.retrieveNodejsRuntime()\n\n"}]}},"/v1/runtimes/nodejs/dependencies":{"put":{"tags":["runtime"],"summary":"Update NodeJS chat runtime NPM dependencies","description":"Updates the NPM dependencies for this application's NodeJS chat runtime","operationId":"update-nodejs-runtime-dependencies","requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChatRuntimeDependencyProperties"}}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}}}}},"security":[{"application_authorization":["read:runtime","update:runtime"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'PUT' \\\n 'https://api.chatkitty.com/v1/runtimes/nodejs/dependencies' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '[\n {\n \"name\": \"firebase\",\n \"version\": \"^9.8.2\"\n }\n]'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Runtime.updateNodejsRuntimeDependencies([\n {\n \"name\": \"firebase\",\n \"version\": \"^9.8.2\"\n }\n])\n"}]}},"/v1/runtimes/nodejs/environment-variables":{"put":{"tags":["runtime"],"summary":"Update NodeJS chat runtime environment variables","description":"Updates the runtime environment variables of this application's NodeJS chat runtime","operationId":"update-nodejs-runtime-environment-variables","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeEnvironmentVariablesProperties"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}}}}},"security":[{"application_authorization":["read:runtime","update:runtime"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'PUT' \\\n 'https://api.chatkitty.com/v1/runtimes/nodejs/environment-variables' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"CUSTOM_ENV_AWS_REGION\": \"us-east-1\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Runtime.updateNodejsRuntimeEnvironmentVariables({\n \"CUSTOM_ENV_AWS_REGION\": \"us-east-1\"\n})\n"}]}},"/v1/runtimes/nodejs/functions":{"get":{"tags":["runtime"],"summary":"List NodeJS chat runtime functions","description":"Returns a page of functions for this application's NodeJS chat runtime","operationId":"list-nodejs-runtime-functions","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChatFunctionResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatFunctionResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatFunctionResource"}}}}},"security":[{"application_authorization":["read:runtime","read:function"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/runtimes/nodejs/functions?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Runtime.listNodejsRuntimeFunctions()\n\n"}]},"post":{"tags":["runtime"],"summary":"Create a NodeJS chat runtime function","description":"Creates a NodeJS chat function for this runtime","operationId":"create-nodejs-runtime-function","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChatFunctionResource"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatFunctionResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatFunctionResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatFunctionResource"}}}}},"security":[{"application_authorization":["read:runtime","read:function"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/runtimes/nodejs/functions' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"type\": \"user.attempted.start_session\",\n \"name\": \"User Attempted Start Session\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\n\nawait chatkitty.Runtime.createNodejsRuntimeFunction({\n \"type\": \"user.attempted.start_session\",\n \"name\": \"User Attempted Start Session\"\n})\n\n"}]}},"/v1/runtimes/nodejs/initialization-script":{"put":{"tags":["runtime"],"summary":"Update NodeJS chat runtime initialization script","description":"Updates the initialization script for this application's NodeJS chat runtime","operationId":"update-nodejs-runtime-initialization-script","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeScriptProperties"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatRuntimeResource"}}}}},"security":[{"application_authorization":["read:runtime","update:runtime"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'PUT' \\\n 'https://api.chatkitty.com/v1/runtimes/nodejs/initialization-script' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"script\": \"import firebase from '\\''firebase'\\'';\\r\\nimport '\\''@firebase/auth'\\'';\\r\\nimport '\\''@firebase/firestore'\\'';\\r\\n\\r\\nconst firebaseConfig = {\\r\\n apiKey: '\\''AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY'\\'',\\r\\n authDomain: '\\''chatkitty-example.firebaseapp.com'\\'',\\r\\n databaseURL: '\\''https://chatkitty-example.firebaseio.com'\\'',\\r\\n projectId: '\\''chatkitty-example'\\'',\\r\\n storageBucket: '\\''chatkitty-example.appspot.com'\\'',\\r\\n messagingSenderId: '\\''540634290949'\\'',\\r\\n appId: '\\''1:540634290949:web:cd754ff7e98087230ff56c'\\'',\\r\\n measurementId: '\\''G-BB7Q5DRQK6'\\'',\\r\\n};\\r\\n\\r\\nif (!firebase.apps.length) {\\r\\n firebase.initializeApp(firebaseConfig);\\r\\n}\\r\\n\\r\\nexport { firebase };\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Runtime.updateNodejsRuntimeInitializationScript({\n \"script\": \"import firebase from 'firebase';\\r\\nimport '@firebase/auth';\\r\\nimport '@firebase/firestore';\\r\\n\\r\\nconst firebaseConfig = {\\r\\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\\r\\n authDomain: 'chatkitty-example.firebaseapp.com',\\r\\n databaseURL: 'https://chatkitty-example.firebaseio.com',\\r\\n projectId: 'chatkitty-example',\\r\\n storageBucket: 'chatkitty-example.appspot.com',\\r\\n messagingSenderId: '540634290949',\\r\\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\\r\\n measurementId: 'G-BB7Q5DRQK6',\\r\\n};\\r\\n\\r\\nif (!firebase.apps.length) {\\r\\n firebase.initializeApp(firebaseConfig);\\r\\n}\\r\\n\\r\\nexport { firebase };\"\n})\n"}]}},"/v1/threads/{id}":{"get":{"tags":["threads"],"summary":"Retrieve a thread","description":"Returns a thread by ID","operationId":"retrieve-thread","parameters":[{"name":"id","in":"path","description":"Reply thread ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyThreadResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ReplyThreadResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ReplyThreadResource"}}}}},"security":[{"application_authorization":["read:thread"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/threads/67528' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Threads.retrieveThread(67528)\n\n"}]}},"/v1/threads/{id}/keystrokes":{"post":{"tags":["threads"],"summary":"Send thread keystrokes","description":"Sends keystrokes in this thread on behalf of a user","operationId":"send-thread-keystrokes","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDelegatedReplyThreadKeystrokesResource"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyThreadKeystrokesResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ReplyThreadKeystrokesResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ReplyThreadKeystrokesResource"}}}}},"security":[{"application_authorization":["read:thread","read:user","create:keystrokes"]}],"x-codeSamples":[]}},"/v1/threads/{id}/messages":{"get":{"tags":["threads"],"summary":"List reply thread messages","description":"Returns a page of replies sent in this thread","operationId":"list-thread-messages","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"start","in":"query","description":"Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"next","in":"query","description":"Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"relation","in":"query","description":"Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages","required":false,"schema":{"type":"string","enum":["SELF","PREVIOUS","NEXT"]}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}}}}},"security":[{"application_authorization":["read:thread","read:message"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/threads/1/messages' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Threads.listThreadMessages(1)\n"}]},"post":{"tags":["threads"],"summary":"Send a reply thread message","description":"Sends a reply message in this thread as the system or on behalf of a user","operationId":"send-thread-message","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"TEXT":"#/components/schemas/CreateTextMessageResource","FILE":"#/components/schemas/CreateFileMessageResource"}},"oneOf":[{"$ref":"#/components/schemas/CreateFileMessageResource"},{"$ref":"#/components/schemas/CreateTextMessageResource"}]}},"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"},"groupTag":{"type":"string"},"properties":{"type":"string"}}}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/MessageResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/MessageResource"}}}}},"security":[{"application_authorization":["read:thread","read:user","create:message"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/threads/44902/messages' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"type\": \"TEXT\",\n \"body\": \"🌞\",\n\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Threads.sendThreadMessage(44902, {\n \"type\": \"TEXT\",\n \"body\": \"🌞\",\n\n})\n"}]}},"/v1/user-sessions":{"get":{"tags":["user-sessions"],"summary":"List user sessions","description":"Returns a page of user sessions belonging to this application","operationId":"list-user-sessions","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"state","in":"query","description":"Filters by state","required":false,"schema":{"type":"string","enum":["ACTIVE","ENDED"]}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserSessionResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserSessionResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserSessionResource"}}}}},"security":[{"application_authorization":["read:user_session"]}],"x-codeSamples":[]}},"/v1/users":{"get":{"tags":["users"],"summary":"List users","description":"Returns a page of users belonging to this application","operationId":"list-users","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"name","in":"query","description":"Filters by username","required":false,"schema":{"type":"string"}},{"name":"properties","in":"query","description":"Filters by user custom properties","required":false,"schema":{"type":"string"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChatUserResource"}}}}},"security":[{"application_authorization":["read:user"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/users?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.listUsers()\n"}]},"post":{"tags":["users"],"summary":"Create a user","description":"Creates a new user","operationId":"create-user","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePersonChatUserResource"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}}}}},"security":[{"application_authorization":["create:user"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/users' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"name\": \"jane@chatkitty.com\",\n \"displayName\": \"Jane Doe\",\n \"isGuest\": false,\n \"properties\": {\n \"favoriteNumber\": 42\n }\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.createUser({\n \"name\": \"jane@chatkitty.com\",\n \"displayName\": \"Jane Doe\",\n \"isGuest\": false,\n \"properties\": {\n \"favoriteNumber\": 42\n }\n})\n"}]},"head":{"tags":["users"],"summary":"Check a user exists","description":"Checks if a user exists","operationId":"check-user-exists","parameters":[{"name":"name","in":"query","description":"Username of the user","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"User does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","description":"Empty object"}},"application/vnd.hal+json":{"schema":{"type":"object","description":"Empty object"}},"application/hal+json":{"schema":{"type":"object","description":"Empty object"}}}}},"security":[{"application_authorization":["read:user"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'HEAD' \\\n 'https://api.chatkitty.com/v1/users?name=Jane%20Doe' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.checkUserExists(\"Jane Doe\")\n"}]}},"/v1/users/{id}":{"get":{"tags":["users"],"summary":"Retrieve a user","description":"Returns a user by ID","operationId":"retrieve-user","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}}}}},"security":[{"application_authorization":["read:user"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/users/1' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.retrieveUser(1)\n"}]},"delete":{"tags":["users"],"summary":"Delete a user","description":"Delets a user","operationId":"delete-user","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ApplicationResource"}}}}},"security":[{"application_authorization":["read:user","delete:user"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'DELETE' \\\n 'https://api.chatkitty.com/v1/users/1' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.deleteUser(1)\n"}]},"patch":{"tags":["users"],"summary":"Update a user","description":"Updates a user","operationId":"update-user","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json+merge-patch":{"schema":{"$ref":"#/components/schemas/ChatUserPropertiesPatch"}}}},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}}}}},"security":[{"application_authorization":["read:user","update:user"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'PATCH' \\\n 'https://api.chatkitty.com/v1/users/1' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json+merge-patch' \\\n -d '{\n \"displayName\": \"Jane Doe\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.updateUser(1)\n"}]}},"/v1/users/{id}/channels":{"get":{"tags":["users"],"summary":"List a user's channels","description":"Returns a page of channels for this user created or joined","operationId":"list-user-channels","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"minimum":0,"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"minimum":1,"type":"integer","default":25}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/PagedModelChannelResource"}}}}},"security":[{"application_authorization":["read:user","read:channels"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/users/1/channels?page=0&size=25' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.listUserChannels(1)\n"}]}},"/v1/users/{id}/display-picture":{"post":{"tags":["users"],"summary":"Update a user's display picture","description":"Updates a user's display picture","operationId":"update-user-display-picture","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExternalFileProperties"}},"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}}}}},"security":[{"application_authorization":["read:user","update:user"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'POST' \\\n 'https://api.chatkitty.com/v1/users/1/display-picture' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"url\": \"https://example.com/files/jane.png\",\n \"name\": \"jane.png\",\n \"contentType\": \"image/png\",\n \"size\": 32768\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.updateUserDisplayPicture(1, {\n \"url\": \"https://example.com/files/jane.png\",\n \"name\": \"jane.png\",\n \"contentType\": \"image/png\",\n \"size\": 32768\n})\n"}]}},"/v1/users/{id}/messages":{"get":{"tags":["users"],"summary":"List a user's messages","description":"Returns a page of messages sent by this user","operationId":"list-user-messages","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"start","in":"query","description":"Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"next","in":"query","description":"Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"relation","in":"query","description":"Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages","required":false,"schema":{"type":"string","enum":["SELF","PREVIOUS","NEXT"]}},{"name":"unread","in":"query","description":"Filters by returning unread messages","required":false,"schema":{"type":"boolean"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelMessageResource"}}}}},"security":[{"application_authorization":["read:user","read:channels"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/users/1/messages' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.listUserMessages(1)\n"}]}},"/v1/users/{id}/notifications":{"get":{"tags":["users"],"summary":"List a user's notifications","description":"Returns a page of notifications received by this user","operationId":"list-user-notifications","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"start","in":"query","description":"Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"next","in":"query","description":"Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"relation","in":"query","description":"Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages","required":false,"schema":{"type":"string","enum":["SELF","PREVIOUS","NEXT"]}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelNotificationResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelNotificationResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/CursorPagedModelNotificationResource"}}}}},"security":[{"application_authorization":["read:user","read:notifications"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/users/1/notifications' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.listUserNotifications(1)\n"}]}},"/v1/users/{id}/secrets/{name}":{"get":{"tags":["users"],"summary":"Retrieve a user secret","description":"Returns a user secret","operationId":"retrieve-user-secret","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"name","in":"path","description":"The secret's name","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/SecretResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/SecretResource"}}}}},"security":[{"application_authorization":["read:user_secret"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'GET' \\\n 'https://api.chatkitty.com/v1/users/1/secrets/Secret%20Name' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.retrieveUserSecret(1,\"Secret Name\")\n"}]},"put":{"tags":["users"],"summary":"Set a user secret","description":"Sets a user secret's value","operationId":"set-user-secret","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"name","in":"path","description":"The secret's name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretResource"}}},"required":true},"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}}}}},"security":[{"application_authorization":["read:user","update:user_secret"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'PUT' \\\n 'https://api.chatkitty.com/v1/users/1/secrets/Jane%20Doe' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"secret\": \"My secret is... well, I'\\''d never tell.\"\n}'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.setUserSecret(1, \"Jane Doe\", {\n \"secret\": \"My secret is... well, I'd never tell.\"\n})\n"}]},"delete":{"tags":["users"],"summary":"Remove a user secret","description":"Removes a user secret's value","operationId":"remove-user-secret","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"name","in":"path","description":"The secret's name","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ResourceNotFoundError","message":"Resource not found","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"ClientError","message":"A client error occurred, check your request","timestamp":"2022-01-16T06:26:49.627204600Z"}}}},"403":{"description":"Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"access_denied","error_description":"Access is denied"}}}},"401":{"description":"Unauthorized: Full authentication is required to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/vnd.hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}},"application/hal+json":{"schema":{"$ref":"#/components/schemas/ChatUserResource"}}}}},"security":[{"application_authorization":["read:user","delete:user_secret"]}],"x-codeSamples":[{"lang":"cURL","source":"curl --location --request 'DELETE' \\\n 'https://api.chatkitty.com/v1/users/1/secrets/Secret%20Name' \\\n -H 'accept: application/json' \\\n -H 'Authorization: Bearer ACCESS-TOKEN'\n"},{"lang":"JavaScript","source":"// npm install chatkitty-platform-sdk\n\nconst chatkitty = new ChatKitty({\n clientId: 'CLIENT-ID',\n clientSecret: 'CLIENT-SECRET'\n})\n\nawait chatkitty.Users.removeUserSecret(1,\"Secret Name\")\n"}]}}},"components":{"schemas":{"ApiError":{"required":["error","message","timestamp"],"type":"object","properties":{"error":{"type":"string"},"explanation":{"type":"string"},"message":{"type":"string"},"properties":{"type":"object","additionalProperties":true,"writeOnly":true},"timestamp":{"type":"string"}}},"AuthenticationError":{"required":["error","error_description"],"type":"object","properties":{"error":{"type":"string"},"error_description":{"type":"string"}}},"SecretResource":{"type":"object","properties":{"secret":{"type":"object","description":"Secret value"}},"example":{"secret":"My secret is... well, I'd never tell."}},"ChatUserPresenceProperties":{"required":["online","status"],"type":"object","properties":{"online":{"type":"boolean","description":"True if this user has an active user session"},"status":{"type":"string","description":"The availability status of this user"}},"description":"Presence status of this user"},"ChatUserProperties":{"required":["displayName","displayPictureUrl","id","isGuest","name","presence","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"Type of user","enum":["PERSON","BOT"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"callStatus":{"type":"string","description":"Call presence status of this user","enum":["AVAILABLE","IN_CALL"]},"displayName":{"type":"string","description":"Human readable name of this user. Shown to other users"},"displayPictureUrl":{"type":"string","description":"URL for this user's display picture"},"isGuest":{"type":"boolean","description":"True if this user was created by a guest user session"},"name":{"type":"string","description":"The unique name used to identify this user across ChatKitty. Also known as username"},"presence":{"$ref":"#/components/schemas/ChatUserPresenceProperties"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this user"}}},"ChatUserResource":{"required":["displayName","displayPictureUrl","id","isGuest","name","presence","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"Type of user","enum":["PERSON","BOT"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"callStatus":{"type":"string","description":"Call presence status of this user","enum":["AVAILABLE","IN_CALL"]},"displayName":{"type":"string","description":"Human readable name of this user. Shown to other users"},"displayPictureUrl":{"type":"string","description":"URL for this user's display picture"},"isGuest":{"type":"boolean","description":"True if this user was created by a guest user session"},"name":{"type":"string","description":"The unique name used to identify this user across ChatKitty. Also known as username"},"presence":{"$ref":"#/components/schemas/ChatUserPresenceProperties"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this user"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":1,"type":"PERSON","name":"jane@chatkitty.com","displayName":"Jane Doe","displayPictureUrl":"https://api.chatkitty.com/v1/picture/jane","presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/1"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/1/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/1/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/1/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"Links":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Link"}},"ChatRuntimeScriptProperties":{"required":["script"],"type":"object","properties":{"script":{"type":"string","description":"The JavaScript/TypeScript source of this script"}},"example":{"script":"import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };"}},"ChatRuntimeDependencyProperties":{"required":["defaultDependency","name","version"],"type":"object","properties":{"defaultDependency":{"type":"boolean","description":"True if this NPM package is automatically installed by ChatKitty and available by default in your chat functions"},"name":{"type":"string","description":"The name of the dependency NPM package"},"version":{"type":"string","description":"The version of the NPM package"}},"description":"The NPM dependencies version of this runtime","example":{"name":"firebase","version":"^9.8.2"}},"ChatRuntimeProperties":{"required":["dependencies","environmentVariables","id","type","version"],"type":"object","properties":{"type":{"type":"string","description":"The type of this runtime. Always NODEJS","enum":["NODEJS"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"dependencies":{"type":"array","description":"The NPM dependencies version of this runtime","items":{"$ref":"#/components/schemas/ChatRuntimeDependencyProperties"}},"environmentVariables":{"type":"object","additionalProperties":true,"description":"Environment variable set for this runtime. Accessible in the initialization script and chat functions associated with this runtime"},"initializationScript":{"$ref":"#/components/schemas/ChatRuntimeScriptProperties"},"version":{"type":"string","description":"The semantic version of this runtime"}},"example":{"id":1,"type":"NODEJS","version":"v0.0.29","dependencies":[{"name":"axios","version":"^0.19.2","defaultDependency":true},{"name":"axios-token-interceptor","version":"^0.2.0","defaultDependency":true},{"name":"chatkitty-platform-sdk","version":"1.0.1","defaultDependency":true},{"name":"qs","version":"6.9.4","defaultDependency":true},{"name":"firebase","version":"^9.8.2","defaultDependency":false}],"initializationScript":{"script":"var foo = 8;"},"environmentVariables":{"CHATKITTY_CLIENT_SECRET":"34e65736-70c2-4d30-b80a-8ad9887c860b","CHATKITTY_CLIENT_ID":"19b458d0-2b50-491c-8f13-65ec12f3978e","CHATKITTY_CHAT_SERVICE_BASE_URL":"https://api.chatkitty.com","CHATKITTY_APPLICATION_ID":"1","CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL":"https://authorization.chatkitty.com"}}},"ChatRuntimeResource":{"required":["dependencies","environmentVariables","id","type","version"],"type":"object","properties":{"type":{"type":"string","description":"The type of this runtime. Always NODEJS","enum":["NODEJS"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"dependencies":{"type":"array","description":"The NPM dependencies version of this runtime","items":{"$ref":"#/components/schemas/ChatRuntimeDependencyProperties"}},"environmentVariables":{"type":"object","additionalProperties":true,"description":"Environment variable set for this runtime. Accessible in the initialization script and chat functions associated with this runtime"},"initializationScript":{"$ref":"#/components/schemas/ChatRuntimeScriptProperties"},"version":{"type":"string","description":"The semantic version of this runtime"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":1,"type":"NODEJS","version":"v0.0.29","dependencies":[{"name":"axios","version":"^0.19.2","defaultDependency":true},{"name":"axios-token-interceptor","version":"^0.2.0","defaultDependency":true},{"name":"chatkitty-platform-sdk","version":"1.0.1","defaultDependency":true},{"name":"qs","version":"6.9.4","defaultDependency":true},{"name":"firebase","version":"^9.8.2","defaultDependency":false}],"initializationScript":{"script":"var foo = 8;"},"environmentVariables":{"CHATKITTY_CLIENT_SECRET":"34e65736-70c2-4d30-b80a-8ad9887c860b","CHATKITTY_CLIENT_ID":"19b458d0-2b50-491c-8f13-65ec12f3978e","CHATKITTY_CHAT_SERVICE_BASE_URL":"https://api.chatkitty.com","CHATKITTY_APPLICATION_ID":"1","CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL":"https://authorization.chatkitty.com"},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/runtimes/nodejs"},"dependencies":{"href":"https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/dependencies"},"initializationScript":{"href":"https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/initialization-script"},"functions":{"href":"https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"ChatRuntimeEnvironmentVariablesProperties":{"type":"object","additionalProperties":{"type":"string"},"example":{"CUSTOM_ENV_AWS_REGION":"us-east-1"}},"ApplicationSettingsProperties":{"required":["guestUsers","userCreatedChannels"],"type":"object","properties":{"guestUsers":{"type":"string","description":"Toggle state of this settings option","enum":["DISABLED","ENABLED"]},"userCreatedChannels":{"type":"string","description":"Toggle state of this settings option","enum":["DISABLED","ENABLED"]}}},"ApplicationSettingsResource":{"required":["guestUsers","userCreatedChannels"],"type":"object","properties":{"guestUsers":{"type":"string","description":"Toggle state of this settings option","enum":["DISABLED","ENABLED"]},"userCreatedChannels":{"type":"string","description":"Toggle state of this settings option","enum":["DISABLED","ENABLED"]},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"features":{"guest_users":"ENABLED","user_created_channels":"DISABLED"}}},"CreateExternalFileProperties":{"required":["contentType","name","size","url"],"type":"object","properties":{"contentType":{"type":"string","description":"File MIME content type"},"name":{"type":"string","description":"File name"},"size":{"type":"integer","description":"File size in bytes","format":"int64"},"url":{"type":"string","description":"External file URL"}},"example":{"url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768}},"CreatePersonChatUserResource":{"required":["displayName","isGuest","name"],"type":"object","properties":{"displayName":{"type":"string","description":"Human readable name of this user. Shown to other users"},"isGuest":{"type":"boolean","description":"True if this user was created by a guest user session"},"name":{"type":"string","description":"The unique name used to identify this user across ChatKitty. Also known as username"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this user"}},"example":{"name":"jane@chatkitty.com","displayName":"Jane Doe","isGuest":false,"properties":{"favoriteNumber":42}}},"ChannelMessageMentionProperties":{"required":["channel","endPosition","startPosition","tag","type"],"type":"object","description":"A channel mention","allOf":[{"$ref":"#/components/schemas/MessageMentionProperties"},{"type":"object","properties":{"channel":{"$ref":"#/components/schemas/MessageMentionChannelProperties"}}}]},"ChatUserMessageMentionProperties":{"required":["endPosition","startPosition","tag","type","user"],"type":"object","description":"A user mention","allOf":[{"$ref":"#/components/schemas/MessageMentionProperties"},{"type":"object","properties":{"user":{"$ref":"#/components/schemas/ChatUserProperties"}}}]},"EmojiProperties":{"required":["aliases","character","description","tags"],"type":"object","properties":{"aliases":{"uniqueItems":true,"type":"array","description":"List of possible aliases for this emoji","items":{"type":"string","description":"List of possible aliases for this emoji"}},"character":{"type":"string","description":"The unicode character of this emoji"},"description":{"type":"string","description":"Description of this emoji"},"tags":{"uniqueItems":true,"type":"array","description":"Tags used to describe this emoji","items":{"type":"string","description":"Tags used to describe this emoji"}}},"description":"The emoji these users reacted with"},"FileChatUserMessageProperties":{"required":["channelId","createdTime","file","id","nestedLevel","properties","type","user"],"type":"object","description":"A file message sent by or behalf of a user","allOf":[{"$ref":"#/components/schemas/MessageProperties"},{"type":"object","properties":{"file":{"$ref":"#/components/schemas/FileProperties"},"user":{"$ref":"#/components/schemas/ChatUserProperties"}}}]},"FileChatUserMessageResource":{"required":["channelId","createdTime","file","id","nestedLevel","properties","type","user"],"type":"object","properties":{"type":{"type":"string","description":"The type of this message","enum":["TEXT","FILE","SYSTEM_TEXT","SYSTEM_FILE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"channelId":{"type":"integer","description":"The ID of the channel this message belongs to","format":"int64"},"createdTime":{"type":"string","description":"The time this message was created","format":"date-time"},"file":{"$ref":"#/components/schemas/FileProperties"},"groupTag":{"type":"string","description":"Optional string to associate this message with other messages. Can be used to group messages into a gallery"},"lastEditedTime":{"type":"string","description":"The time this message was last edited","format":"date-time"},"nestedLevel":{"type":"integer","description":"The nested thread level of this message","format":"int32"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this message"},"reactions":{"type":"array","description":"Reactions to this message","items":{"$ref":"#/components/schemas/MessageReactionsSummaryProperties"}},"repliesCount":{"type":"integer","description":"The number of replies to this message","format":"int64"},"user":{"$ref":"#/components/schemas/ChatUserProperties"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":44904,"type":"FILE","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"file":{"url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44904"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39953"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"FileProperties":{"required":["contentType","name","size","type","url"],"type":"object","properties":{"type":{"type":"string","description":"The type of this file. Either external or hosted by ChatKitty","enum":["HOSTED","EXTERNAL"]},"contentType":{"type":"string","description":"The mime type of this file"},"name":{"type":"string","description":"The file name"},"size":{"type":"integer","description":"The size of this file in bytes","format":"int64"},"url":{"type":"string","description":"The file URL"}},"description":"The file data of this message"},"FileSystemMessageProperties":{"required":["channelId","createdTime","file","id","nestedLevel","properties","type"],"type":"object","description":"A file message sent by this application itself. Used for systems announcements independent of any user","allOf":[{"$ref":"#/components/schemas/MessageProperties"},{"type":"object","properties":{"file":{"$ref":"#/components/schemas/FileProperties"}}}]},"FileSystemMessageResource":{"required":["channelId","createdTime","file","id","nestedLevel","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this message","enum":["TEXT","FILE","SYSTEM_TEXT","SYSTEM_FILE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"channelId":{"type":"integer","description":"The ID of the channel this message belongs to","format":"int64"},"createdTime":{"type":"string","description":"The time this message was created","format":"date-time"},"file":{"$ref":"#/components/schemas/FileProperties"},"groupTag":{"type":"string","description":"Optional string to associate this message with other messages. Can be used to group messages into a gallery"},"lastEditedTime":{"type":"string","description":"The time this message was last edited","format":"date-time"},"nestedLevel":{"type":"integer","description":"The nested thread level of this message","format":"int32"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this message"},"reactions":{"type":"array","description":"Reactions to this message","items":{"$ref":"#/components/schemas/MessageReactionsSummaryProperties"}},"repliesCount":{"type":"integer","description":"The number of replies to this message","format":"int64"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":44905,"type":"SYSTEM_FILE","channelId":702,"file":{"url":"https://example.com/files/my-application-file.png","name":"file.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44905"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"MessageLinkPreviewImageProperties":{"required":["source"],"type":"object","properties":{"source":{"type":"string","description":"The url source of this image"}},"description":"Image data of this link preview"},"MessageLinkPreviewProperties":{"required":["image","title","url"],"type":"object","properties":{"description":{"type":"string","description":"Description of this link preview"},"image":{"$ref":"#/components/schemas/MessageLinkPreviewImageProperties"},"siteName":{"type":"string","description":"The name of the site linked"},"title":{"type":"string","description":"The title of this link"},"url":{"type":"string","description":"The URL of the link being previewed"}},"description":"Embedded link preview data"},"MessageLinkProperties":{"required":["endPosition","source","startPosition"],"type":"object","properties":{"endPosition":{"type":"integer","description":"The ending index of this link within the message","format":"int32"},"preview":{"$ref":"#/components/schemas/MessageLinkPreviewProperties"},"source":{"type":"string","description":"The href of the URL this message link represents"},"startPosition":{"type":"integer","description":"The starting index of this link within the message","format":"int32"}},"description":"Link previews in this message"},"MessageMentionChannelProperties":{"required":["createdTime","id","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this channel","enum":["DIRECT","PUBLIC","PRIVATE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"The ISO date-time this channel was created","format":"date-time"},"creator":{"$ref":"#/components/schemas/ChatUserProperties"},"displayName":{"type":"string","description":"Human readable name of this channel shown to users. Present if this is a group channel"},"name":{"type":"string","description":"The unique name of this channel used to reference the channel. Present if this is a group channel"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"}},"description":"Channel properties embedded in channel mentions"},"MessageMentionProperties":{"required":["endPosition","startPosition","tag","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this message mention","enum":["CHANNEL","USER"]},"endPosition":{"type":"integer","description":"The ending position of this mention reference inside its message","format":"int32"},"startPosition":{"type":"integer","description":"The starting position of this mention reference inside its message","format":"int32"},"tag":{"type":"string","description":"The literal text referencing the mentioned entity inside the message"}},"description":"Mentions in this message","discriminator":{"propertyName":"type","mapping":{"CHANNEL":"#/components/schemas/ChannelMessageMentionProperties","USER":"#/components/schemas/ChatUserMessageMentionProperties"}}},"MessageProperties":{"required":["channelId","createdTime","id","nestedLevel","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this message","enum":["TEXT","FILE","SYSTEM_TEXT","SYSTEM_FILE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"channelId":{"type":"integer","description":"The ID of the channel this message belongs to","format":"int64"},"createdTime":{"type":"string","description":"The time this message was created","format":"date-time"},"groupTag":{"type":"string","description":"Optional string to associate this message with other messages. Can be used to group messages into a gallery"},"lastEditedTime":{"type":"string","description":"The time this message was last edited","format":"date-time"},"nestedLevel":{"type":"integer","description":"The nested thread level of this message","format":"int32"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this message"},"reactions":{"type":"array","description":"Reactions to this message","items":{"$ref":"#/components/schemas/MessageReactionsSummaryProperties"}},"repliesCount":{"type":"integer","description":"The number of replies to this message","format":"int64"}},"discriminator":{"propertyName":"type","mapping":{"TEXT":"#/components/schemas/TextChatUserMessageProperties","FILE":"#/components/schemas/FileChatUserMessageProperties","SYSTEM_TEXT":"#/components/schemas/TextSystemMessageProperties","SYSTEM_FILE":"#/components/schemas/FileSystemMessageProperties"}}},"MessageReactionsSummaryProperties":{"required":["count","emoji","users"],"type":"object","properties":{"count":{"type":"integer","description":"The number of users that reacted with this emoji","format":"int64"},"emoji":{"$ref":"#/components/schemas/EmojiProperties"},"users":{"type":"array","description":"The users that reacted with this emoji","items":{"$ref":"#/components/schemas/ChatUserProperties"}}},"description":"Reactions to this message"},"MessageResource":{"required":["channelId","createdTime","id","nestedLevel","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this message","enum":["TEXT","FILE","SYSTEM_TEXT","SYSTEM_FILE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"channelId":{"type":"integer","description":"The ID of the channel this message belongs to","format":"int64"},"createdTime":{"type":"string","description":"The time this message was created","format":"date-time"},"groupTag":{"type":"string","description":"Optional string to associate this message with other messages. Can be used to group messages into a gallery"},"lastEditedTime":{"type":"string","description":"The time this message was last edited","format":"date-time"},"nestedLevel":{"type":"integer","description":"The nested thread level of this message","format":"int32"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this message"},"reactions":{"type":"array","description":"Reactions to this message","items":{"$ref":"#/components/schemas/MessageReactionsSummaryProperties"}},"repliesCount":{"type":"integer","description":"The number of replies to this message","format":"int64"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":44902,"type":"TEXT","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"🌞","properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44902"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39953"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"discriminator":{"propertyName":"type","mapping":{"TEXT":"#/components/schemas/TextChatUserMessageResource","FILE":"#/components/schemas/FileChatUserMessageResource","SYSTEM_TEXT":"#/components/schemas/TextSystemMessageResource","SYSTEM_FILE":"#/components/schemas/FileSystemMessageResource"}},"oneOf":[{"$ref":"#/components/schemas/TextChatUserMessageResource"},{"$ref":"#/components/schemas/FileChatUserMessageResource"},{"$ref":"#/components/schemas/TextSystemMessageResource"},{"$ref":"#/components/schemas/FileSystemMessageResource"}]},"TextChatUserMessageProperties":{"required":["body","channelId","createdTime","id","nestedLevel","properties","type","user"],"type":"object","description":"A text message sent by or behalf of a user","allOf":[{"$ref":"#/components/schemas/MessageProperties"},{"type":"object","properties":{"body":{"type":"string","description":"The text body of this message"},"links":{"type":"array","description":"Link previews in this message","items":{"$ref":"#/components/schemas/MessageLinkProperties"}},"mentions":{"type":"array","description":"Mentions in this message","items":{"$ref":"#/components/schemas/MessageMentionProperties"}},"user":{"$ref":"#/components/schemas/ChatUserProperties"}}}]},"TextChatUserMessageResource":{"required":["body","channelId","createdTime","id","nestedLevel","properties","type","user"],"type":"object","properties":{"type":{"type":"string","description":"The type of this message","enum":["TEXT","FILE","SYSTEM_TEXT","SYSTEM_FILE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"body":{"type":"string","description":"The text body of this message"},"channelId":{"type":"integer","description":"The ID of the channel this message belongs to","format":"int64"},"createdTime":{"type":"string","description":"The time this message was created","format":"date-time"},"groupTag":{"type":"string","description":"Optional string to associate this message with other messages. Can be used to group messages into a gallery"},"lastEditedTime":{"type":"string","description":"The time this message was last edited","format":"date-time"},"links":{"type":"array","description":"Link previews in this message","items":{"$ref":"#/components/schemas/MessageLinkProperties"}},"mentions":{"type":"array","description":"Mentions in this message","items":{"$ref":"#/components/schemas/MessageMentionProperties"}},"nestedLevel":{"type":"integer","description":"The nested thread level of this message","format":"int32"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this message"},"reactions":{"type":"array","description":"Reactions to this message","items":{"$ref":"#/components/schemas/MessageReactionsSummaryProperties"}},"repliesCount":{"type":"integer","description":"The number of replies to this message","format":"int64"},"user":{"$ref":"#/components/schemas/ChatUserProperties"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":44902,"type":"TEXT","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"🌞","properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44902"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39953"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"TextSystemMessageProperties":{"required":["body","channelId","createdTime","id","nestedLevel","properties","type"],"type":"object","description":"A text message sent by this application itself. Used for systems announcements independent of any user","allOf":[{"$ref":"#/components/schemas/MessageProperties"},{"type":"object","properties":{"body":{"type":"string","description":"The text body of this message"},"links":{"type":"array","description":"Link previews in this message","items":{"$ref":"#/components/schemas/MessageLinkProperties"}},"mentions":{"type":"array","description":"Mentions in this message","items":{"$ref":"#/components/schemas/MessageMentionProperties"}}}}]},"TextSystemMessageResource":{"required":["body","channelId","createdTime","id","nestedLevel","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this message","enum":["TEXT","FILE","SYSTEM_TEXT","SYSTEM_FILE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"body":{"type":"string","description":"The text body of this message"},"channelId":{"type":"integer","description":"The ID of the channel this message belongs to","format":"int64"},"createdTime":{"type":"string","description":"The time this message was created","format":"date-time"},"groupTag":{"type":"string","description":"Optional string to associate this message with other messages. Can be used to group messages into a gallery"},"lastEditedTime":{"type":"string","description":"The time this message was last edited","format":"date-time"},"links":{"type":"array","description":"Link previews in this message","items":{"$ref":"#/components/schemas/MessageLinkProperties"}},"mentions":{"type":"array","description":"Mentions in this message","items":{"$ref":"#/components/schemas/MessageMentionProperties"}},"nestedLevel":{"type":"integer","description":"The nested thread level of this message","format":"int32"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this message"},"reactions":{"type":"array","description":"Reactions to this message","items":{"$ref":"#/components/schemas/MessageReactionsSummaryProperties"}},"repliesCount":{"type":"integer","description":"The number of replies to this message","format":"int64"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":44903,"type":"SYSTEM_TEXT","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"This is a system announcement. Keep calm and carry on.","properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44903"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"ChatUserIdReference":{"required":["id"],"type":"object","description":"Reference to a user by ID","allOf":[{"$ref":"#/components/schemas/ChatUserReference"},{"type":"object","properties":{"id":{"type":"integer","description":"User ID associated with this user ","format":"int64"}}}]},"ChatUserReference":{"type":"object","description":"Reference to a user","example":{"username":"jane@chatkitty.com"}},"ChatUserUsernameReference":{"required":["username"],"type":"object","description":"Reference to a user by username","allOf":[{"$ref":"#/components/schemas/ChatUserReference"},{"type":"object","properties":{"username":{"type":"string","description":"Username associated with this user"}}}]},"CreateFileMessageResource":{"required":["file"],"type":"object","example":{"type":"FILE","file":{"url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768}},"allOf":[{"$ref":"#/components/schemas/CreateMessageResource"},{"type":"object","properties":{"file":{"$ref":"#/components/schemas/CreateExternalFileProperties"}}}]},"CreateMessageResource":{"required":["type"],"type":"object","properties":{"type":{"type":"string"},"groupTag":{"type":"string","description":"Optional string to associate this message with other messages. Can be used to group messages into a gallery"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this message"},"user":{"oneOf":[{"$ref":"#/components/schemas/ChatUserIdReference"},{"$ref":"#/components/schemas/ChatUserUsernameReference"}]}},"discriminator":{"propertyName":"type","mapping":{"TEXT":"#/components/schemas/CreateTextMessageResource","FILE":"#/components/schemas/CreateFileMessageResource"}}},"CreateTextMessageResource":{"required":["body"],"type":"object","example":{"type":"TEXT","body":"Hello, World!"},"allOf":[{"$ref":"#/components/schemas/CreateMessageResource"},{"type":"object","properties":{"body":{"type":"string","description":"The text body of this message"}}}]},"CreateDelegatedReplyThreadKeystrokesResource":{"required":["keys","user"],"type":"object","properties":{"keys":{"type":"string"},"user":{"oneOf":[{"$ref":"#/components/schemas/ChatUserIdReference"},{"$ref":"#/components/schemas/ChatUserUsernameReference"}]}}},"ReplyThreadKeystrokesResource":{"required":["keys","username"],"type":"object","properties":{"keys":{"type":"string"},"username":{"type":"string"},"_links":{"$ref":"#/components/schemas/Links"}}},"CreateChatFunctionResource":{"required":["initializeAsynchronously","name","type"],"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"initializeAsynchronously":{"type":"boolean"},"name":{"type":"string"}},"example":{"type":"user.attempted.start_session","name":"User Attempted Start Session"}},"ChatFunctionChatRuntimeProperties":{"required":["id","type","version"],"type":"object","properties":{"type":{"type":"string","description":"The type of this runtime. Always NODEJS","enum":["NODEJS"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"version":{"type":"string","description":"The semantic version of this runtime"}},"description":"The runtime this function executes on. Always a NodeJS runtime"},"ChatFunctionResource":{"required":["currentVersionNumber","enabled","id","name","runtime","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this function"},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"currentVersionNumber":{"type":"integer","description":"The current version number of this function. Incremented every time a new version is deployed","format":"int64"},"description":{"type":"string","description":"Optional description of this function"},"enabled":{"type":"boolean","description":"True if this function is enabled"},"name":{"type":"string","description":"The name of this function"},"runtime":{"$ref":"#/components/schemas/ChatFunctionChatRuntimeProperties"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":1,"type":"user.attempted.start_session","runtime":{"id":1,"type":"NODEJS","version":"v0.0.29"},"name":"User Attempted Start Session","enabled":true,"currentVersionNumber":34,"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1"},"versions":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions"},"invocations":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations"},"currentVersion":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/current-version"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"ApplicationJobResource":{"required":["createdTime","id","state","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of application job","enum":["CHANNEL_IMPORT","CHANNEL_MEMBERS_IMPORT","MESSAGE_IMPORT","USER_IMPORT","MESSAGE_ANALYTICS_EXPORT"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","format":"date-time"},"endedTime":{"type":"string","format":"date-time"},"file":{"type":"string"},"state":{"type":"string","description":"The running state of an application job","enum":["PENDING","RUNNING","FINISHED","FAILED"]},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":53,"type":"CHANNEL_IMPORT","state":"PENDING","createdTime":"2021-09-28T05:30:44.265Z","endedTime":"2021-09-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/53"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"CreateChatFunctionVersionResource":{"required":["handlerScript"],"type":"object","properties":{"handlerScript":{"type":"string","description":"JavaScript/TypeScript code that runs when this function is executed"}},"example":{"handlerScript":"const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello ' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}"}},"ChatFunctionVersionResource":{"required":["handlerScript","id","versionNumber"],"type":"object","properties":{"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"handlerScript":{"type":"string","description":"JavaScript/TypeScript code that runs when this function is executed"},"versionNumber":{"type":"integer","description":"The version number of this function version. Incremented from the previous version","format":"int64"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":13515,"versionNumber":34,"handlerScript":"const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello ' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/13515"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"ChannelProperties":{"required":["createdTime","id","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this channel","enum":["DIRECT","PUBLIC","PRIVATE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"The ISO date-time this channel was created","format":"date-time"},"creator":{"$ref":"#/components/schemas/ChatUserProperties"},"lastReceivedMessage":{"$ref":"#/components/schemas/MessageProperties"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"}},"discriminator":{"propertyName":"type","mapping":{"PUBLIC":"#/components/schemas/PublicChannelProperties","PRIVATE":"#/components/schemas/PrivateChannelProperties","DIRECT":"#/components/schemas/DirectChannelProperties"}}},"ChannelResource":{"required":["createdTime","id","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this channel","enum":["DIRECT","PUBLIC","PRIVATE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"The ISO date-time this channel was created","format":"date-time"},"creator":{"$ref":"#/components/schemas/ChatUserProperties"},"lastReceivedMessage":{"$ref":"#/components/schemas/MessageProperties"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":55913,"type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7","displayName":"Our public channel","properties":{},"createdTime":"2021-09-28T01:35:40.967Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"discriminator":{"propertyName":"type","mapping":{"PUBLIC":"#/components/schemas/PublicChannelResource","PRIVATE":"#/components/schemas/PrivateChannelResource","DIRECT":"#/components/schemas/DirectChannelResource"}},"oneOf":[{"$ref":"#/components/schemas/PublicChannelResource"},{"$ref":"#/components/schemas/PrivateChannelResource"},{"$ref":"#/components/schemas/DirectChannelResource"}]},"DirectChannelProperties":{"required":["createdTime","id","members","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this channel","enum":["DIRECT","PUBLIC","PRIVATE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"The ISO date-time this channel was created","format":"date-time"},"creator":{"$ref":"#/components/schemas/ChatUserProperties"},"lastReceivedMessage":{"$ref":"#/components/schemas/MessageProperties"},"members":{"type":"array","description":"The members of this channel. Present if this is a direct channel. For other channel types, use [**list channel messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages)","items":{"$ref":"#/components/schemas/ChatUserProperties"}},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"}},"description":"A direct channel"},"DirectChannelResource":{"required":["createdTime","id","members","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this channel","enum":["DIRECT","PUBLIC","PRIVATE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"The ISO date-time this channel was created","format":"date-time"},"creator":{"$ref":"#/components/schemas/ChatUserProperties"},"lastReceivedMessage":{"$ref":"#/components/schemas/MessageProperties"},"members":{"type":"array","description":"The members of this channel. Present if this is a direct channel. For other channel types, use [**list channel messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages)","items":{"$ref":"#/components/schemas/ChatUserProperties"}},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":19354,"type":"DIRECT","creator":{"id":20953,"type":"PERSON","name":"jake@giftata.com","displayName":"Jake","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Jake","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"members":[{"id":2,"type":"PERSON","name":"aaron","displayName":"aaron","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},{"id":20953,"type":"PERSON","name":"jake@giftata.com","displayName":"Jake","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Jake","presence":{"status":"UNAVAILABLE","online":false},"properties":{}}],"properties":{},"createdTime":"2021-05-18T20:40:29.472Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/19354"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/19354/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/19354/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/19354/events"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"PrivateChannelProperties":{"required":["createdTime","displayName","id","name","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this channel","enum":["DIRECT","PUBLIC","PRIVATE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"The ISO date-time this channel was created","format":"date-time"},"creator":{"$ref":"#/components/schemas/ChatUserProperties"},"displayName":{"type":"string","description":"Human readable name of this channel shown to users"},"lastReceivedMessage":{"$ref":"#/components/schemas/MessageProperties"},"name":{"type":"string","description":"The unique name of this channel used to reference the channel"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"}},"description":"A private channel"},"PrivateChannelResource":{"required":["createdTime","displayName","id","name","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this channel","enum":["DIRECT","PUBLIC","PRIVATE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"The ISO date-time this channel was created","format":"date-time"},"creator":{"$ref":"#/components/schemas/ChatUserProperties"},"displayName":{"type":"string","description":"Human readable name of this channel shown to users"},"lastReceivedMessage":{"$ref":"#/components/schemas/MessageProperties"},"name":{"type":"string","description":"The unique name of this channel used to reference the channel"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":55914,"type":"PRIVATE","name":"a3e9118e-4c60-4a87-a19f-cb8bf5351462","displayName":"Our private channel","properties":{},"createdTime":"2021-09-28T01:45:20.542Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"PublicChannelProperties":{"required":["createdTime","displayName","id","name","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this channel","enum":["DIRECT","PUBLIC","PRIVATE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"The ISO date-time this channel was created","format":"date-time"},"creator":{"$ref":"#/components/schemas/ChatUserProperties"},"displayName":{"type":"string","description":"Human readable name of this channel shown to users"},"lastReceivedMessage":{"$ref":"#/components/schemas/MessageProperties"},"name":{"type":"string","description":"The unique name of this channel used to reference the channel"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"}},"description":"A public channel"},"PublicChannelResource":{"required":["createdTime","displayName","id","name","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this channel","enum":["DIRECT","PUBLIC","PRIVATE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"The ISO date-time this channel was created","format":"date-time"},"creator":{"$ref":"#/components/schemas/ChatUserProperties"},"displayName":{"type":"string","description":"Human readable name of this channel shown to users"},"lastReceivedMessage":{"$ref":"#/components/schemas/MessageProperties"},"name":{"type":"string","description":"The unique name of this channel used to reference the channel"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":55913,"type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7","displayName":"Our public channel","properties":{},"createdTime":"2021-09-28T01:35:40.967Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"CreateChannelInviteResource":{"required":["user"],"type":"object","properties":{"user":{"oneOf":[{"$ref":"#/components/schemas/ChatUserIdReference"},{"$ref":"#/components/schemas/ChatUserUsernameReference"}]}},"example":{"user":{"username":"jane@chatkitty.com"}}},"ChannelInviteResource":{"required":["createdTime"],"type":"object","properties":{"createdTime":{"type":"string","description":"The time this invite was created","format":"date-time"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"createdTime":"2022-06-02T16:51:03.206366286Z","_links":{"invitee":{"href":"https://api.chatkitty.com/v1/applications/1/users/1054"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/67026"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"CreateChannelGenericEventResource":{"required":["properties","type"],"type":"object","properties":{"type":{"type":"string","description":"Custom type of this event"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this event"}},"example":{"type":"My Custom Event","properties":{"payload":"Boom!","stuff":{"favoriteNumber":42,"favoriteMovie":"Lilo and Stitch"}}}},"ChannelGenericEventResource":{"required":["properties","type"],"type":"object","properties":{"type":{"type":"string","description":"Custom type of this event"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this event"},"user":{"$ref":"#/components/schemas/ChatUserProperties"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"type":"My Custom Event","properties":{"payload":"Boom!","stuff":{"favoriteNumber":42,"favoriteMovie":"Lilo and Stitch"}},"_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"CreateChannelResource":{"required":["type"],"type":"object","properties":{"type":{"type":"string"},"creator":{"oneOf":[{"$ref":"#/components/schemas/ChatUserIdReference"},{"$ref":"#/components/schemas/ChatUserUsernameReference"}]},"members":{"uniqueItems":true,"type":"array","description":"List of user references of members of this channel","items":{"oneOf":[{"$ref":"#/components/schemas/ChatUserIdReference"},{"$ref":"#/components/schemas/ChatUserUsernameReference"}]}},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"}},"discriminator":{"propertyName":"type","mapping":{"PUBLIC":"#/components/schemas/CreatePublicChannelResource","PRIVATE":"#/components/schemas/CreatePrivateChannelResource","DIRECT":"#/components/schemas/CreateDirectChannelResource"}}},"CreateDirectChannelResource":{"required":["members"],"type":"object","description":"Creates a direct channel","example":{"type":"DIRECT","members":[{"username":"jane@chatkitty.com"},{"username":"john@chatkitty.com"}]},"allOf":[{"$ref":"#/components/schemas/CreateChannelResource"}]},"CreatePrivateChannelResource":{"type":"object","description":"Creates a private channel","example":{"type":"PRIVATE","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7"},"allOf":[{"$ref":"#/components/schemas/CreateChannelResource"},{"type":"object","properties":{"name":{"type":"string","description":"The unique name of this channel used to reference the channel. If absent defaults to a random UUID"},"displayName":{"type":"string","description":"Human readable name of this channel shown to users. If absent defaults to the channel name"}}}]},"CreatePublicChannelResource":{"type":"object","description":"Creates a public channel","example":{"type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7"},"allOf":[{"$ref":"#/components/schemas/CreateChannelResource"},{"type":"object","properties":{"name":{"type":"string","description":"The unique name of this channel used to reference the channel. If absent defaults to a random UUID"},"displayName":{"type":"string","description":"Human readable name of this channel shown to users. If absent defaults to the channel name"}}}]},"ChatUserPresencePropertiesPatch":{"type":"object","properties":{"status":{"type":"string","description":"Updates the availability status of this user"}},"description":"Updates the presence status of this user"},"ChatUserPropertiesPatch":{"type":"object","properties":{"displayName":{"type":"string","description":"Updates human readable name of this user"},"isGuest":{"type":"boolean","description":"If true, changes this user to a guest user. If false requires this user be authenticated"},"presence":{"$ref":"#/components/schemas/ChatUserPresencePropertiesPatch"},"properties":{"type":"object","additionalProperties":true,"description":"Updates custom data associated with this user"}},"example":{"displayName":"Jane Doe"}},"MessagePropertiesPatch":{"type":"object","properties":{"body":{"type":"string","description":"Updates the text body of this message"},"properties":{"type":"object","additionalProperties":true,"description":"Updates custom data associated with this message"}}},"ChannelPropertiesPatch":{"type":"object","properties":{"displayName":{"type":"string","description":"Updates human readable name of this channel"},"properties":{"type":"object","additionalProperties":true,"description":"Updates custom data associated with this channel"}},"example":{"displayName":"A chatty channel"}},"ApplicationSentSystemMessageNotificationData":{"required":["channelId","message","type"],"type":"object","properties":{"type":{"type":"string"},"channelId":{"type":"integer","description":"The ID channel the message was sent. Deprecated: Use the channel property of this notification","format":"int64","deprecated":true},"message":{"$ref":"#/components/schemas/SystemMessageResource"}},"description":"Sent when a system message is sent"},"ChatUserMentionedChannelNotificationData":{"required":["channelId","mentionedChannel","message","type"],"type":"object","properties":{"type":{"type":"string"},"channelId":{"type":"integer","description":"The ID of the channel the mentioning message was sent. Deprecated: Use the channel property of this notification","format":"int64","deprecated":true},"mentionedChannel":{"$ref":"#/components/schemas/ChannelResource"},"message":{"$ref":"#/components/schemas/TextMessageResource"}},"description":"Sent when a user mentions a channel in a message"},"ChatUserMentionedChatUserNotificationData":{"required":["channelId","mentionedUser","message","type"],"type":"object","properties":{"type":{"type":"string"},"channelId":{"type":"integer","description":"The ID of the channel the mentioning message was sent. Deprecated: Use the channel property of this notification","format":"int64","deprecated":true},"mentionedUser":{"$ref":"#/components/schemas/ChatUserResource"},"message":{"$ref":"#/components/schemas/TextMessageResource"}},"description":"Sent when a user mentions a user in a message"},"ChatUserMessageResource":{"required":["channelId","createdTime","id","nestedLevel","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this message","enum":["TEXT","FILE","SYSTEM_TEXT","SYSTEM_FILE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"channelId":{"type":"integer","description":"The ID of the channel this message belongs to","format":"int64"},"createdTime":{"type":"string","description":"The time this message was created","format":"date-time"},"groupTag":{"type":"string","description":"Optional string to associate this message with other messages. Can be used to group messages into a gallery"},"lastEditedTime":{"type":"string","description":"The time this message was last edited","format":"date-time"},"nestedLevel":{"type":"integer","description":"The nested thread level of this message","format":"int32"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this message"},"reactions":{"type":"array","description":"Reactions to this message","items":{"$ref":"#/components/schemas/MessageReactionsSummaryProperties"}},"repliesCount":{"type":"integer","description":"The number of replies to this message","format":"int64"},"_links":{"$ref":"#/components/schemas/Links"}},"description":"The message that was sent","discriminator":{"propertyName":"type","mapping":{"TEXT":"#/components/schemas/TextChatUserMessageResource","FILE":"#/components/schemas/FileChatUserMessageResource"}},"oneOf":[{"$ref":"#/components/schemas/TextChatUserMessageResource"},{"$ref":"#/components/schemas/FileChatUserMessageResource"}]},"ChatUserRepliedToChatUserMessageNotificationData":{"required":["channelId","message","parent","type"],"type":"object","properties":{"type":{"type":"string"},"channelId":{"type":"integer","description":"The ID of channel the reply message was sent. Deprecated: Use the channel property of this notification","format":"int64","deprecated":true},"message":{"$ref":"#/components/schemas/MessageResource"},"parent":{"$ref":"#/components/schemas/MessageResource"}},"description":"Sent when a user replies to a message"},"ChatUserSentChatUserMessageNotificationData":{"required":["channelId","message","type"],"type":"object","properties":{"type":{"type":"string"},"channelId":{"type":"integer","description":"The ID channel the message was sent. Deprecated: Use the channel property of this notification","format":"int64","deprecated":true},"message":{"$ref":"#/components/schemas/ChatUserMessageResource"}},"description":"Sent when a user sends a message"},"CursorPageMetadata":{"required":["size"],"type":"object","properties":{"next":{"type":"string"},"size":{"type":"integer","format":"int64"},"start":{"type":"string"}}},"CursorPagedModelNotificationResource":{"required":["page"],"type":"object","properties":{"_embedded":{"type":"object","properties":{"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationResource"}}}},"page":{"$ref":"#/components/schemas/CursorPageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"notifications":[{"id":3256308,"title":"System message sent","body":"File attachment","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/85103"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"SYSTEM:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/85103.relay"}},"createdTime":"2022-06-02T16:36:54.356152Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":3255805,"title":"System message sent","body":"Hello, World!","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":85216,"type":"SYSTEM_TEXT","channelId":702,"body":"Hello, World!","properties":{},"createdTime":"2022-06-02T16:34:58.871950Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/85216"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"SYSTEM:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/85216.relay"}},"createdTime":"2022-06-02T16:35:14.296158Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":1750641,"title":"hey sent a message","body":"🌞","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":44902,"type":"TEXT","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"🌞","properties":{},"createdTime":"2021-09-16T16:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44902"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39953"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"USER:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/44902.relay"}},"createdTime":"2021-09-16T16:45:48.351Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":1749995,"title":"ho sent a message","body":"ok","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":44759,"type":"TEXT","channelId":702,"user":{"id":39841,"type":"PERSON","name":"ho@mailinator.com","displayName":"ho","displayPictureUrl":"https://api.chatkitty.com/v1/picture/ho","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"ok","properties":{},"createdTime":"2021-09-16T05:13:48.030Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44759"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39841"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"USER:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/44759.relay"}},"createdTime":"2021-09-16T05:14:00.993Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":1749225,"title":"Nisar sent a message","body":"hi","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":44559,"type":"TEXT","channelId":702,"user":{"id":39827,"type":"PERSON","name":"ss@dd.com","displayName":"Nisar","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Nisar","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"hi","properties":{},"createdTime":"2021-09-14T20:13:37.357Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44559"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39827"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"USER:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/44559.relay"}},"createdTime":"2021-09-14T20:13:49.998Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=SELF"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=NEXT"}},"page":{"size":5}}},"NotificationData":{"required":["type"],"type":"object","properties":{"type":{"type":"string","description":"The type of notification that was received. This specifies the schema of the notification data"}},"description":"Additional context data of this notification","discriminator":{"propertyName":"type","mapping":{"SYSTEM:SENT:MESSAGE":"#/components/schemas/ApplicationSentSystemMessageNotificationData","USER:MENTIONED:CHANNEL":"#/components/schemas/ChatUserMentionedChannelNotificationData","USER:MENTIONED:USER":"#/components/schemas/ChatUserMentionedChatUserNotificationData","USER:REPLIED_TO:MESSAGE":"#/components/schemas/ChatUserRepliedToChatUserMessageNotificationData","USER:SENT:MESSAGE":"#/components/schemas/ChatUserSentChatUserMessageNotificationData"}}},"NotificationResource":{"required":["body","createdTime","data","id","muted","title"],"type":"object","properties":{"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"body":{"type":"string","description":"The text body of this notification"},"channel":{"discriminator":{"propertyName":"type","mapping":{"PUBLIC":"#/components/schemas/PublicChannelProperties","PRIVATE":"#/components/schemas/PrivateChannelProperties","DIRECT":"#/components/schemas/DirectChannelProperties"}},"oneOf":[{"$ref":"#/components/schemas/DirectChannelProperties"},{"$ref":"#/components/schemas/PrivateChannelProperties"},{"$ref":"#/components/schemas/PublicChannelProperties"}]},"createdTime":{"type":"string","description":"Time this notification was created","format":"date-time"},"data":{"$ref":"#/components/schemas/NotificationData"},"muted":{"type":"boolean","description":"True if this notification should be muted"},"readTime":{"type":"string","description":"Time this notification was read","format":"date-time"},"title":{"type":"string","description":"The title of this notification"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":3256308,"title":"System message sent","body":"File attachment","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/85103"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"SYSTEM:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/85103.relay"}},"createdTime":"2022-06-02T16:36:54.356152Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"SystemMessageResource":{"required":["channelId","createdTime","id","nestedLevel","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this message","enum":["TEXT","FILE","SYSTEM_TEXT","SYSTEM_FILE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"channelId":{"type":"integer","description":"The ID of the channel this message belongs to","format":"int64"},"createdTime":{"type":"string","description":"The time this message was created","format":"date-time"},"groupTag":{"type":"string","description":"Optional string to associate this message with other messages. Can be used to group messages into a gallery"},"lastEditedTime":{"type":"string","description":"The time this message was last edited","format":"date-time"},"nestedLevel":{"type":"integer","description":"The nested thread level of this message","format":"int32"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this message"},"reactions":{"type":"array","description":"Reactions to this message","items":{"$ref":"#/components/schemas/MessageReactionsSummaryProperties"}},"repliesCount":{"type":"integer","description":"The number of replies to this message","format":"int64"},"_links":{"$ref":"#/components/schemas/Links"}},"description":"The message that was sent","discriminator":{"propertyName":"type","mapping":{"SYSTEM_TEXT":"#/components/schemas/TextSystemMessageResource","SYSTEM_FILE":"#/components/schemas/FileSystemMessageResource"}},"oneOf":[{"$ref":"#/components/schemas/TextSystemMessageResource"},{"$ref":"#/components/schemas/FileSystemMessageResource"}]},"TextMessageResource":{"required":["channelId","createdTime","id","nestedLevel","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this message","enum":["TEXT","FILE","SYSTEM_TEXT","SYSTEM_FILE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"channelId":{"type":"integer","description":"The ID of the channel this message belongs to","format":"int64"},"createdTime":{"type":"string","description":"The time this message was created","format":"date-time"},"groupTag":{"type":"string","description":"Optional string to associate this message with other messages. Can be used to group messages into a gallery"},"lastEditedTime":{"type":"string","description":"The time this message was last edited","format":"date-time"},"nestedLevel":{"type":"integer","description":"The nested thread level of this message","format":"int32"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this message"},"reactions":{"type":"array","description":"Reactions to this message","items":{"$ref":"#/components/schemas/MessageReactionsSummaryProperties"}},"repliesCount":{"type":"integer","description":"The number of replies to this message","format":"int64"},"_links":{"$ref":"#/components/schemas/Links"}},"description":"The message in which the user was mentioned","discriminator":{"propertyName":"type","mapping":{"TEXT":"#/components/schemas/TextChatUserMessageResource","SYSTEM_TEXT":"#/components/schemas/TextSystemMessageResource"}},"oneOf":[{"$ref":"#/components/schemas/TextChatUserMessageResource"},{"$ref":"#/components/schemas/TextSystemMessageResource"}]},"CursorPagedModelMessageResource":{"required":["page"],"type":"object","properties":{"_embedded":{"type":"object","properties":{"messages":{"type":"array","items":{"$ref":"#/components/schemas/MessageResource"}}}},"page":{"$ref":"#/components/schemas/CursorPageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"messages":[{"id":44902,"type":"TEXT","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"🌞","properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44902"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39953"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":44701,"type":"TEXT","channelId":802,"user":{"id":39906,"type":"PERSON","name":"sean.donald@gmail.com","displayName":"zolo","displayPictureUrl":"https://api.chatkitty.com/v1/picture/zolo","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"test","properties":{},"createdTime":"2021-09-16T14:57:55.903Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44701"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39906"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/802"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":44700,"type":"TEXT","channelId":802,"user":{"id":39906,"type":"PERSON","name":"sean.donald@gmail.com","displayName":"zolo","displayPictureUrl":"https://api.chatkitty.com/v1/picture/zolo","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"hi","properties":{},"createdTime":"2021-09-16T14:57:46.056Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44700"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39906"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/802"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":44760,"type":"TEXT","channelId":1255,"user":{"id":39841,"type":"PERSON","name":"ho@mailinator.com","displayName":"ho","displayPictureUrl":"https://api.chatkitty.com/v1/picture/ho","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"do?","properties":{},"createdTime":"2021-09-16T09:14:09.585Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44760"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39841"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1255"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":44759,"type":"TEXT","channelId":702,"user":{"id":39841,"type":"PERSON","name":"ho@mailinator.com","displayName":"ho","displayPictureUrl":"https://api.chatkitty.com/v1/picture/ho","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"ok","properties":{},"createdTime":"2021-09-16T09:13:48.030Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44759"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39841"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=SELF"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=NEXT"}},"page":{"size":5}}},"PageMetadata":{"type":"object","properties":{"number":{"type":"integer","format":"int64"},"size":{"type":"integer","format":"int64"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"PagedModelChannelResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"channels":{"type":"array","items":{"$ref":"#/components/schemas/ChannelResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"channels":[{"id":15252,"type":"DIRECT","creator":{"id":19652,"type":"PERSON","name":"rexyfexy@gmail.com","displayName":"doark","displayPictureUrl":"https://api.chatkitty.com/v1/picture/doark","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"members":[{"id":19652,"type":"PERSON","name":"rexyfexy@gmail.com","displayName":"doark","displayPictureUrl":"https://api.chatkitty.com/v1/picture/doark","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},{"id":19452,"type":"PERSON","name":"aa","displayName":"emra","displayPictureUrl":"https://api.chatkitty.com/v1/picture/emra","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}}],"properties":{},"createdTime":"2021-05-05T00:38:24.888Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/15252"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/15252/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/15252/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/15252/events"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":55913,"type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7","displayName":"Our public channel","properties":{},"createdTime":"2021-09-28T01:35:40.967Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":2402,"type":"PUBLIC","name":"#test","displayName":"Test Channel","creator":{"id":4153,"type":"PERSON","name":"test@mail.com","displayName":"mridx","displayPictureUrl":"https://api.chatkitty.com/v1/picture/mridx","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"properties":{},"createdTime":"2020-12-13T21:12:09.195Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":856,"type":"PUBLIC","name":"mkm","displayName":"Meme Channel","creator":{"id":1504,"type":"PERSON","name":"njnj@vghf.jk","displayName":"mkm","displayPictureUrl":"https://api.chatkitty.com/v1/picture/mkm","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"lastReceivedMessage":{"id":17654,"type":"TEXT","channelId":856,"user":{"id":15402,"type":"PERSON","name":"paras@code.co","displayName":"Paras","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Paras","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"body":"ghk","properties":{},"createdTime":"2021-03-31T06:00:28.680Z"},"properties":{},"createdTime":"2020-11-25T07:46:45.775Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":1302,"type":"PUBLIC","name":"SONU KUMAR","displayName":"SONU KUMAR","creator":{"id":2302,"type":"PERSON","name":"852122","displayName":"SONU KUMAR","displayPictureUrl":"https://api.chatkitty.com/v1/picture/SONU+KUMAR","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"lastReceivedMessage":{"id":44530,"type":"TEXT","channelId":1302,"user":{"id":39826,"type":"PERSON","name":"steve@innersync.com","displayName":"Steve Williams","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Steve+Williams","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"body":"Checking out","properties":{},"createdTime":"2021-09-14T18:02:56.066Z"},"properties":{},"createdTime":"2020-12-02T05:10:01.260Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5"}},"page":{"size":5,"totalElements":2020,"totalPages":404,"number":0}}},"PagedModelChatUserResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/ChatUserResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"users":[{"id":14503,"type":"PERSON","name":"jane@chatkitty.com","displayName":"Jane","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Jane","presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/14503"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/14503/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/14503/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/14503/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":3004,"type":"PERSON","name":"1","displayName":"ChatKittyUser","displayPictureUrl":"https://api.chatkitty.com/v1/picture/ChatKittyUser","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/3004"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/3004/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/3004/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/3004/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":6152,"type":"PERSON","name":"10zxc13@gmail.com","displayName":"Jack","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Jack","presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/6152"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/6152/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/6152/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/6152/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":3353,"type":"PERSON","name":"12121","displayName":"12121","displayPictureUrl":"https://api.chatkitty.com/v1/picture/12121","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/3353"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/3353/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/3353/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/3353/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":6602,"type":"PERSON","name":"123","displayName":"123","displayPictureUrl":"https://api.chatkitty.com/v1/picture/123","presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/6602"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/6602/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/6602/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/6602/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/users?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/users?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/users?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/users?page=114&size=5"}},"page":{"size":5,"totalElements":571,"totalPages":115,"number":0}}},"ChatUserSessionProperties":{"required":["createdTime","id","state","user"],"type":"object","properties":{"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"Time this session was created","format":"date-time"},"endTime":{"type":"string","description":"Time this session ended. Present if state is ENDED","format":"date-time"},"state":{"type":"string","description":"State of this session. ACTIVE or ENDED","enum":["ACTIVE","ENDED"]},"user":{"$ref":"#/components/schemas/ChatUserProperties"},"userAgent":{"type":"string","description":"User agent used to start this session"}}},"ChatUserSessionResource":{"required":["createdTime","id","state","user"],"type":"object","properties":{"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"Time this session was created","format":"date-time"},"endTime":{"type":"string","description":"Time this session ended. Present if state is ENDED","format":"date-time"},"state":{"type":"string","description":"State of this session. ACTIVE or ENDED","enum":["ACTIVE","ENDED"]},"user":{"$ref":"#/components/schemas/ChatUserProperties"},"userAgent":{"type":"string","description":"User agent used to start this session"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":635627,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T08:25:27.253Z","createdTime":"2021-11-12T08:02:34.122Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39805"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}}},"PagedModelChatUserSessionResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/ChatUserSessionResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"sessions":[{"id":635627,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T08:25:27.253Z","createdTime":"2021-11-12T08:02:34.122Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39805"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":635641,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T08:35:08.587Z","createdTime":"2021-11-12T08:25:33.885Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39805"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":635669,"user":{"id":39806,"type":"PERSON","name":"c6f75947-af48-4893-a78e-0e0b9bd68580","displayName":"Julie Jaxton","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Julie+Jaxton","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T08:55:36.282Z","createdTime":"2021-11-12T08:38:54.982Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39806"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":635644,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T08:54:48.309Z","createdTime":"2021-11-12T08:45:13.682Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39805"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":635651,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T09:06:40.409Z","createdTime":"2021-11-12T09:04:53.490Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39805"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/user-sessions?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/user-sessions?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/user-sessions?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/user-sessions?page=328&size=5"}},"page":{"size":5,"totalElements":1645,"totalPages":329,"number":0}}},"ReplyThreadResource":{"required":["createdTime","id","properties","type"],"type":"object","properties":{"type":{"type":"string","description":"The type of this thread","enum":["MAIN","STANDALONE","MESSAGE"]},"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"The ISO date-time this thread was created","format":"date-time"},"name":{"type":"string","description":"The name of this thread"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this thread"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":67528,"type":"MAIN","properties":{},"createdTime":"2022-02-04T13:19:06.764939Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/threads/67528"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/67026"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"PagedModelChatFunctionResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"functions":{"type":"array","items":{"$ref":"#/components/schemas/ChatFunctionResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"functions":[{"id":202,"type":"user.received.notification","runtime":{"id":1,"type":"NODEJS","version":"v0.0.29"},"name":"User Received Notification","enabled":true,"currentVersionNumber":5,"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/202"},"versions":{"href":"https://api.chatkitty.com/v1/applications/1/functions/202/versions"},"invocations":{"href":"https://api.chatkitty.com/v1/applications/1/functions/202/invocations"},"currentVersion":{"href":"https://api.chatkitty.com/v1/applications/1/functions/202/current-version"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":4552,"type":"user.sent.message","runtime":{"id":1,"type":"NODEJS","version":"v0.0.29"},"name":"User Sent Message","enabled":false,"currentVersionNumber":0,"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/4552"},"versions":{"href":"https://api.chatkitty.com/v1/applications/1/functions/4552/versions"},"invocations":{"href":"https://api.chatkitty.com/v1/applications/1/functions/4552/invocations"},"currentVersion":{"href":"https://api.chatkitty.com/v1/applications/1/functions/4552/current-version"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":6152,"type":"user.started.chat_session","runtime":{"id":1,"type":"NODEJS","version":"v0.0.29"},"name":"User Started Chat Session","enabled":false,"currentVersionNumber":0,"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/6152"},"versions":{"href":"https://api.chatkitty.com/v1/applications/1/functions/6152/versions"},"invocations":{"href":"https://api.chatkitty.com/v1/applications/1/functions/6152/invocations"},"currentVersion":{"href":"https://api.chatkitty.com/v1/applications/1/functions/6152/current-version"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":1,"type":"user.attempted.start_session","runtime":{"id":1,"type":"NODEJS","version":"v0.0.29"},"name":"User Attempted Start Session","enabled":true,"currentVersionNumber":34,"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1"},"versions":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions"},"invocations":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations"},"currentVersion":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/current-version"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions?page=0&size=5"}},"page":{"size":5,"totalElements":4,"totalPages":1,"number":0}}},"MessageReadReceiptResource":{"required":["createdTime","user"],"type":"object","properties":{"createdTime":{"type":"string","description":"Time the user read this message","format":"date-time"},"user":{"$ref":"#/components/schemas/ChatUserProperties"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"user":{"id":1,"type":"PERSON","name":"jane@chatkitty.com","displayName":"Jane Doe","displayPictureUrl":"https://api.chatkitty.com/v1/picture/jane","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"createdTime":"2022-06-02T16:51:03.206366286Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/1"},"message":{"href":"https://api.chatkitty.com/v1/applications/1/messages/67026"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"PagedModelMessageReadReceiptResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"receipts":{"type":"array","items":{"$ref":"#/components/schemas/MessageReadReceiptResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"receipts":[{"user":{"id":1,"type":"PERSON","name":"jane@chatkitty.com","displayName":"Jane Doe","displayPictureUrl":"https://api.chatkitty.com/v1/picture/jane","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"createdTime":"2022-06-02T16:51:03.206366286Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/1"},"message":{"href":"https://api.chatkitty.com/v1/applications/1/messages/67026"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/67026/read-receipts?page=0&size=25"}},"page":{"size":1,"totalElements":1,"totalPages":1,"number":0}}},"PagedModelApplicationJobResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"jobs":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationJobResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"jobs":[{"id":1,"type":"CHANNEL_IMPORT","state":"FAILED","createdTime":"2021-09-28T04:19:41.255Z","endedTime":"2021-09-28T04:19:42.230Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/1"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":52,"type":"CHANNEL_IMPORT","state":"FAILED","createdTime":"2021-09-28T05:30:08.902Z","endedTime":"2021-09-28T05:30:09.571Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/52"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":53,"type":"CHANNEL_IMPORT","state":"FINISHED","createdTime":"2021-09-28T05:30:44.265Z","endedTime":"2021-09-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/53"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":54,"type":"CHANNEL_IMPORT","state":"FINISHED","createdTime":"2021-09-28T05:35:35.075Z","endedTime":"2021-09-28T05:36:15.755Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/54"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":102,"type":"CHANNEL_MEMBERS_IMPORT","state":"FINISHED","createdTime":"2021-09-29T04:52:22.895Z","endedTime":"2021-09-29T04:52:58.941Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/102"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs?running=false&page=0&size=25"}},"page":{"size":25,"totalElements":5,"totalPages":1,"number":0}}},"PagedModelChatFunctionVersionResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"versions":{"type":"array","items":{"$ref":"#/components/schemas/ChatFunctionVersionResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"versions":[{"id":13515,"versionNumber":34,"handlerScript":"const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello ' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/13515"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":13461,"versionNumber":33,"handlerScript":"const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello!');\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/13461"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":4802,"versionNumber":32,"handlerScript":"async function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return {payload: true};\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/4802"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":4652,"versionNumber":31,"handlerScript":"async function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return true;\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/4652"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":4555,"versionNumber":30,"handlerScript":"async function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return {\n status: \"SUCCESS\"\n };\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/4555"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=6&size=5"}},"page":{"size":5,"totalElements":35,"totalPages":7,"number":0}}},"ChatFunctionInvocationResource":{"required":["args","createdTime","id","result","status","versionNumber"],"type":"object","properties":{"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"args":{"type":"object","additionalProperties":true,"description":"The function arguments passed into this function for this invocation"},"createdTime":{"type":"string","description":"The ISO date-time of this invocation when the function was called","format":"date-time"},"result":{"type":"object","additionalProperties":true,"description":"The result of this invocation when it completed"},"status":{"type":"string","description":"The running status of this invocation","enum":["RUNNING","SUCCEEDED","FAILED"]},"versionNumber":{"type":"integer","description":"The version number of this function version when this invocation occured","format":"int64"},"_links":{"$ref":"#/components/schemas/Links"}}},"PagedModelChatFunctionInvocationResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"invocations":{"type":"array","items":{"$ref":"#/components/schemas/ChatFunctionInvocationResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"invocations":[{"id":468510,"versionNumber":34,"args":{"authParams":{"displayName":"Niyati"},"username":"asac@sfas.com"},"status":"SUCCEEDED","result":{"payload":["Hello asac@sfas.com"]},"createdTime":"2021-09-20T06:37:01.766Z","_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":468453,"versionNumber":34,"args":{"authParams":{"displayName":""},"username":""},"status":"SUCCEEDED","result":{"payload":["Hello ","Hello "]},"createdTime":"2021-09-19T09:34:40.190Z","_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":468452,"versionNumber":34,"args":{"authParams":{"displayName":""},"username":""},"status":"SUCCEEDED","result":{"payload":["Hello "]},"createdTime":"2021-09-19T09:34:26.890Z","_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":467243,"versionNumber":34,"args":{"authParams":{"displayName":""},"username":"aaron"},"status":"SUCCEEDED","result":{"payload":["Hello aaron"]},"createdTime":"2021-09-17T17:00:31.396Z","_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":467162,"versionNumber":34,"args":{"authParams":{"displayName":"bob"},"username":"fwfe@efw.com"},"status":"SUCCEEDED","result":{"payload":["Hello fwfe@efw.com"]},"createdTime":"2021-09-17T09:15:50.072Z","_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1515&size=5"}},"page":{"size":5,"totalElements":7578,"totalPages":1516,"number":0}}},"ChatSessionResource":{"required":["createdTime","id","session","state"],"type":"object","properties":{"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"Time this session was created","format":"date-time"},"endTime":{"type":"string","description":"Time this session ended. Present if state is ENDED","format":"date-time"},"session":{"$ref":"#/components/schemas/ChatUserSessionProperties"},"state":{"type":"string","description":"State of this session. ACTIVE or ENDED","enum":["ACTIVE","ENDED"]},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":1480794,"session":{"id":544188,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-19T04:35:43.576Z","createdTime":"2021-09-19T04:28:48.442Z"},"state":"ENDED","endTime":"2021-09-19T04:33:41.677Z","createdTime":"2021-09-19T04:33:40.657Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/544188"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55002"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}}},"PagedModelChatSessionResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/ChatSessionResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"sessions":[{"id":1480794,"session":{"id":544188,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-19T04:35:43.576Z","createdTime":"2021-09-19T04:28:48.442Z"},"state":"ENDED","endTime":"2021-09-19T04:33:41.677Z","createdTime":"2021-09-19T04:33:40.657Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/544188"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55002"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":1480795,"session":{"id":544188,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-19T04:35:43.576Z","createdTime":"2021-09-19T04:28:48.442Z"},"state":"ENDED","endTime":"2021-09-19T04:35:43.597Z","createdTime":"2021-09-19T04:33:41.710Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/544188"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55052"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":1480731,"session":{"id":544216,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-19T04:38:45.272Z","createdTime":"2021-09-19T04:35:45.028Z"},"state":"ENDED","endTime":"2021-09-19T04:35:55.360Z","createdTime":"2021-09-19T04:35:45.685Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/544216"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55052"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":1481281,"session":{"id":545001,"user":{"id":39806,"type":"PERSON","name":"c6f75947-af48-4893-a78e-0e0b9bd68580","displayName":"Julie Jaxton","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Julie+Jaxton","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-20T12:13:12.242Z","createdTime":"2021-09-20T12:13:09.900Z"},"state":"ENDED","endTime":"2021-09-20T12:13:12.255Z","createdTime":"2021-09-20T12:13:10.352Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/545001"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55002"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":1481282,"session":{"id":545052,"user":{"id":39807,"type":"PERSON","name":"8fadc920-f3e6-49ff-9398-1e58b3dc44dd","displayName":"Zaria Bria","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Zaria+Bria","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-20T12:13:22.564Z","createdTime":"2021-09-20T12:13:20.105Z"},"state":"ENDED","endTime":"2021-09-20T12:13:22.575Z","createdTime":"2021-09-20T12:13:20.553Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/545052"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55002"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/chat-sessions?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/chat-sessions?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/chat-sessions?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/chat-sessions?page=1037&size=5"}},"page":{"size":5,"totalElements":5190,"totalPages":1038,"number":0}}},"ChannelMembershipResource":{"required":["createdTime"],"type":"object","properties":{"createdTime":{"type":"string","format":"date-time"},"_links":{"$ref":"#/components/schemas/Links"}}},"PagedModelChannelMembershipResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"memberships":{"type":"array","items":{"$ref":"#/components/schemas/ChannelMembershipResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"memberships":[{"createdTime":"2020-12-02T21:52:33.976Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/2"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"member":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members/2"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"createdTime":"2020-12-02T22:03:28.742Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/52"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"member":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members/52"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"createdTime":"2020-11-23T13:03:17.433Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/352"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"member":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members/352"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"createdTime":"2020-12-07T22:28:47.620Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/403"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"member":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members/403"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"createdTime":"2020-11-23T14:34:29.580Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/452"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"member":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members/452"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=107&size=5"}},"page":{"size":5,"totalElements":537,"totalPages":108,"number":0}}},"PagedModelChannelInviteResource":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"invites":{"type":"array","items":{"$ref":"#/components/schemas/ChannelInviteResource"}}}},"page":{"$ref":"#/components/schemas/PageMetadata"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"_embedded":{"invites":[{"createdTime":"2022-06-02T16:51:03.206366Z","_links":{"invitee":{"href":"https://api.chatkitty.com/v1/applications/1/users/1054"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/67026"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/67026/invites?page=0&size=25"}},"page":{"size":25,"totalElements":1,"totalPages":1,"number":0}}},"ApplicationResource":{"required":["createdTime","id","key","properties"],"type":"object","properties":{"id":{"type":"integer","description":"64-bit integer identifier associated with this resource","format":"int64"},"createdTime":{"type":"string","description":"ISO date-time this application was created","format":"date-time"},"key":{"type":"string","description":"Primary API key assigned to this application"},"properties":{"type":"object","additionalProperties":true,"description":"Custom properties attached to this application"},"_links":{"$ref":"#/components/schemas/Links"}},"example":{"id":1,"key":"19b458d0-2b50-491c-8f13-65ec12f3978e","properties":{},"created_time":"2020-10-02T20:29:25.316Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"Link":{"type":"object","properties":{"href":{"type":"string"},"hreflang":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"},"deprecation":{"type":"string"},"profile":{"type":"string"},"name":{"type":"string"},"templated":{"type":"boolean"}}},"MessageImport":{"required":["channelId","type"],"type":"object","properties":{"type":{"type":"string"},"channelId":{"type":"integer","description":"ID of the channel this message belongs to","format":"int64"},"groupTag":{"type":"string","description":"Tag identifying the message group this message belongs to"},"idempotencyKey":{"type":"string","description":"Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended"},"properties":{"type":"object","additionalProperties":true,"description":"Map of custom data attached to this message"}},"example":{"idempotencyKey":"unique-external-id","type":"TEXT","body":"Hello, World!"},"discriminator":{"propertyName":"type","mapping":{"SYSTEM_TEXT":"#/components/schemas/TextSystemMessageImport","TEXT":"#/components/schemas/TextChatUserMessageImport"}}},"ChatUserImport":{"required":["displayName","guest","name","properties"],"type":"object","properties":{"displayName":{"type":"string","description":"Human readable name of this user. Shown to other users"},"displayPicture":{"$ref":"#/components/schemas/FileImport"},"guest":{"type":"boolean","description":"True if this user was created by a guest user session"},"idempotencyKey":{"type":"string","description":"Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended"},"name":{"type":"string","description":"The unique name used to identify this user across ChatKitty. Also known as username"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this user"}},"example":{"name":"jane@chatkitty.com","displayName":"Jane Doe","isGuest":false,"properties":{"favoriteNumber":42}}},"ChannelMembershipImport":{"required":["username"],"type":"object","properties":{"idempotencyKey":{"type":"string","description":"Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended"},"username":{"type":"string","description":"Username of the user to be added as a member"}},"example":{"username":"jane@chatkitty.com"}},"FileImport":{"required":["contentType","name","size","url"],"type":"object","properties":{"contentType":{"type":"string","description":"The mime type of this file"},"idempotencyKey":{"type":"string","description":"Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended"},"name":{"type":"string","description":"The file name"},"size":{"type":"integer","description":"The size of this file in bytes","format":"int64"},"url":{"type":"string","description":"The file URL"}},"description":"External file properties"},"ChannelImport":{"required":["members","type"],"type":"object","properties":{"type":{"type":"string"},"creator":{"type":"string","description":"Username of the user who created this channel"},"idempotencyKey":{"type":"string","description":"Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended"},"members":{"type":"array","description":"List of usernames of members of this channel","items":{"type":"string","description":"List of usernames of members of this channel"}},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"}},"example":{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["jane@chatkitty.com","john@chatkitty.com"]},"discriminator":{"propertyName":"type","mapping":{"PUBLIC":"#/components/schemas/PublicChannelImport","PRIVATE":"#/components/schemas/PrivateChannelImport","DIRECT":"#/components/schemas/DirectChannelImport"}}},"TextMessageImport":{"required":["body","channelId"],"type":"object","properties":{"body":{"type":"string","description":"The text body of this message"},"channelId":{"type":"integer","description":"ID of the channel this message belongs to","format":"int64"},"groupTag":{"type":"string","description":"Tag identifying the message group this message belongs to"},"idempotencyKey":{"type":"string","description":"Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended"},"properties":{"type":"object","additionalProperties":true,"description":"Map of custom data attached to this message"}}},"DirectChannelImport":{"required":["members"],"type":"object","description":"Imports a direct channel","example":{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["jane@chatkitty.com","john@chatkitty.com"]},"allOf":[{"$ref":"#/components/schemas/ChannelImport"}]},"GroupChannelImport":{"required":["members"],"type":"object","properties":{"creator":{"type":"string","description":"Username of the user who created this channel"},"displayName":{"type":"string","description":"Human readable name of this channel shown to users. If absent defaults to the channel name"},"idempotencyKey":{"type":"string","description":"Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended"},"members":{"type":"array","description":"List of usernames of members of this channel","items":{"type":"string","description":"List of usernames of members of this channel"}},"name":{"type":"string","description":"The unique name of this channel used to reference the channel. If absent defaults to a random UUID"},"properties":{"type":"object","additionalProperties":true,"description":"Custom data associated with this channel"}}},"TextSystemMessageImport":{"required":["body","channelId"],"type":"object","description":"Imports a system text message","example":{"type":"TEXT","body":"Hello, World!"},"allOf":[{"$ref":"#/components/schemas/MessageImport"},{"type":"object","properties":{"body":{"type":"string","description":"The text body of this message"}}}]},"TextChatUserMessageImport":{"required":["body","channelId","user"],"type":"object","description":"Imports a user text message","example":{"type":"TEXT","body":"Hello, World!","user":"jane@chatkitty.com"},"allOf":[{"$ref":"#/components/schemas/MessageImport"},{"type":"object","properties":{"body":{"type":"string","description":"The text body of this message"},"user":{"type":"string","description":"Username of the user who sent this message"}}}]},"PublicChannelImport":{"required":["members"],"type":"object","description":"Imports a public channel","example":{"idempotencyKey":"unique-external-id","type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7"},"allOf":[{"$ref":"#/components/schemas/ChannelImport"},{"type":"object","properties":{"name":{"type":"string","description":"The unique name of this channel used to reference the channel. If absent defaults to a random UUID"},"displayName":{"type":"string","description":"Human readable name of this channel shown to users. If absent defaults to the channel name"}}}]},"PrivateChannelImport":{"required":["members"],"type":"object","description":"Imports a private channel","example":{"idempotencyKey":"unique-external-id","type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7"},"allOf":[{"$ref":"#/components/schemas/ChannelImport"},{"type":"object","properties":{"name":{"type":"string","description":"The unique name of this channel used to reference the channel. If absent defaults to a random UUID"},"displayName":{"type":"string","description":"Human readable name of this channel shown to users. If absent defaults to the channel name"}}}]}},"examples":{"SecretResource":{"value":{"secret":"My secret is... well, I'd never tell."}},"ChatUserResource":{"value":{"id":1,"type":"PERSON","name":"jane@chatkitty.com","displayName":"Jane Doe","displayPictureUrl":"https://api.chatkitty.com/v1/picture/jane","presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/1"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/1/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/1/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/1/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"Links":{"value":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5"}}},"ChatRuntimeScriptProperties":{"value":{"script":"import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };"}},"ChatRuntimeDependencyProperties":{"value":{"name":"firebase","version":"^9.8.2"}},"ChatRuntimeProperties":{"value":{"id":1,"type":"NODEJS","version":"v0.0.29","dependencies":[{"name":"axios","version":"^0.19.2","defaultDependency":true},{"name":"axios-token-interceptor","version":"^0.2.0","defaultDependency":true},{"name":"chatkitty-platform-sdk","version":"1.0.1","defaultDependency":true},{"name":"qs","version":"6.9.4","defaultDependency":true},{"name":"firebase","version":"^9.8.2","defaultDependency":false}],"initializationScript":{"script":"var foo = 8;"},"environmentVariables":{"CHATKITTY_CLIENT_SECRET":"34e65736-70c2-4d30-b80a-8ad9887c860b","CHATKITTY_CLIENT_ID":"19b458d0-2b50-491c-8f13-65ec12f3978e","CHATKITTY_CHAT_SERVICE_BASE_URL":"https://api.chatkitty.com","CHATKITTY_APPLICATION_ID":"1","CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL":"https://authorization.chatkitty.com"}}},"ChatRuntimeResource":{"value":{"id":1,"type":"NODEJS","version":"v0.0.29","dependencies":[{"name":"axios","version":"^0.19.2","defaultDependency":true},{"name":"axios-token-interceptor","version":"^0.2.0","defaultDependency":true},{"name":"chatkitty-platform-sdk","version":"1.0.1","defaultDependency":true},{"name":"qs","version":"6.9.4","defaultDependency":true},{"name":"firebase","version":"^9.8.2","defaultDependency":false}],"initializationScript":{"script":"var foo = 8;"},"environmentVariables":{"CHATKITTY_CLIENT_SECRET":"34e65736-70c2-4d30-b80a-8ad9887c860b","CHATKITTY_CLIENT_ID":"19b458d0-2b50-491c-8f13-65ec12f3978e","CHATKITTY_CHAT_SERVICE_BASE_URL":"https://api.chatkitty.com","CHATKITTY_APPLICATION_ID":"1","CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL":"https://authorization.chatkitty.com"},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/runtimes/nodejs"},"dependencies":{"href":"https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/dependencies"},"initializationScript":{"href":"https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/initialization-script"},"functions":{"href":"https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"ChatRuntimeEnvironmentVariablesProperties":{"value":{"CUSTOM_ENV_AWS_REGION":"us-east-1"}},"ApplicationSettingsResource":{"value":{"features":{"guest_users":"ENABLED","user_created_channels":"DISABLED"}}},"CreateExternalFileProperties":{"value":{"url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768}},"CreatePersonChatUserResource":{"value":{"name":"jane@chatkitty.com","displayName":"Jane Doe","isGuest":false,"properties":{"favoriteNumber":42}}},"FileChatUserMessageResource":{"value":{"id":44904,"type":"FILE","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"file":{"url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44904"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39953"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"FileSystemMessageResource":{"value":{"id":44905,"type":"SYSTEM_FILE","channelId":702,"file":{"url":"https://example.com/files/my-application-file.png","name":"file.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44905"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"MessageResource":{"value":{"id":44902,"type":"TEXT","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"🌞","properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44902"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39953"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"TextChatUserMessageResource":{"value":{"id":44902,"type":"TEXT","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"🌞","properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44902"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39953"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"TextSystemMessageResource":{"value":{"id":44903,"type":"SYSTEM_TEXT","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"This is a system announcement. Keep calm and carry on.","properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44903"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"ChatUserReference":{"value":{"username":"jane@chatkitty.com"}},"CreateFileMessageResource":{"value":{"type":"FILE","file":{"url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768}}},"CreateTextMessageResource":{"value":{"type":"TEXT","body":"Hello, World!"}},"CreateChatFunctionResource":{"value":{"type":"user.attempted.start_session","name":"User Attempted Start Session"}},"ChatFunctionResource":{"value":{"id":1,"type":"user.attempted.start_session","runtime":{"id":1,"type":"NODEJS","version":"v0.0.29"},"name":"User Attempted Start Session","enabled":true,"currentVersionNumber":34,"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1"},"versions":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions"},"invocations":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations"},"currentVersion":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/current-version"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"ApplicationJobResource":{"value":{"id":53,"type":"CHANNEL_IMPORT","state":"PENDING","createdTime":"2021-09-28T05:30:44.265Z","endedTime":"2021-09-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/53"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"CreateChatFunctionVersionResource":{"value":{"handlerScript":"const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello ' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}"}},"ChatFunctionVersionResource":{"value":{"id":13515,"versionNumber":34,"handlerScript":"const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello ' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/13515"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"ChannelResource":{"value":{"id":55913,"type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7","displayName":"Our public channel","properties":{},"createdTime":"2021-09-28T01:35:40.967Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"DirectChannelResource":{"value":{"id":19354,"type":"DIRECT","creator":{"id":20953,"type":"PERSON","name":"jake@giftata.com","displayName":"Jake","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Jake","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"members":[{"id":2,"type":"PERSON","name":"aaron","displayName":"aaron","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},{"id":20953,"type":"PERSON","name":"jake@giftata.com","displayName":"Jake","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Jake","presence":{"status":"UNAVAILABLE","online":false},"properties":{}}],"properties":{},"createdTime":"2021-05-18T20:40:29.472Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/19354"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/19354/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/19354/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/19354/events"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"PrivateChannelResource":{"value":{"id":55914,"type":"PRIVATE","name":"a3e9118e-4c60-4a87-a19f-cb8bf5351462","displayName":"Our private channel","properties":{},"createdTime":"2021-09-28T01:45:20.542Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55914/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"PublicChannelResource":{"value":{"id":55913,"type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7","displayName":"Our public channel","properties":{},"createdTime":"2021-09-28T01:35:40.967Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"CreateChannelInviteResource":{"value":{"user":{"username":"jane@chatkitty.com"}}},"ChannelInviteResource":{"value":{"createdTime":"2022-06-02T16:51:03.206366286Z","_links":{"invitee":{"href":"https://api.chatkitty.com/v1/applications/1/users/1054"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/67026"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"CreateChannelGenericEventResource":{"value":{"type":"My Custom Event","properties":{"payload":"Boom!","stuff":{"favoriteNumber":42,"favoriteMovie":"Lilo and Stitch"}}}},"ChannelGenericEventResource":{"value":{"type":"My Custom Event","properties":{"payload":"Boom!","stuff":{"favoriteNumber":42,"favoriteMovie":"Lilo and Stitch"}},"_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"CreateDirectChannelResource":{"value":{"type":"DIRECT","members":[{"username":"jane@chatkitty.com"},{"username":"john@chatkitty.com"}]}},"CreatePrivateChannelResource":{"value":{"type":"PRIVATE","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7"}},"CreatePublicChannelResource":{"value":{"type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7"}},"ChatUserPropertiesPatch":{"value":{"displayName":"Jane Doe"}},"ChannelPropertiesPatch":{"value":{"displayName":"A chatty channel"}},"CursorPagedModelNotificationResource":{"value":{"_embedded":{"notifications":[{"id":3256308,"title":"System message sent","body":"File attachment","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/85103"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"SYSTEM:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/85103.relay"}},"createdTime":"2022-06-02T16:36:54.356152Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":3255805,"title":"System message sent","body":"Hello, World!","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":85216,"type":"SYSTEM_TEXT","channelId":702,"body":"Hello, World!","properties":{},"createdTime":"2022-06-02T16:34:58.871950Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/85216"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"SYSTEM:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/85216.relay"}},"createdTime":"2022-06-02T16:35:14.296158Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":1750641,"title":"hey sent a message","body":"🌞","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":44902,"type":"TEXT","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"🌞","properties":{},"createdTime":"2021-09-16T16:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44902"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39953"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"USER:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/44902.relay"}},"createdTime":"2021-09-16T16:45:48.351Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":1749995,"title":"ho sent a message","body":"ok","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":44759,"type":"TEXT","channelId":702,"user":{"id":39841,"type":"PERSON","name":"ho@mailinator.com","displayName":"ho","displayPictureUrl":"https://api.chatkitty.com/v1/picture/ho","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"ok","properties":{},"createdTime":"2021-09-16T05:13:48.030Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44759"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39841"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"USER:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/44759.relay"}},"createdTime":"2021-09-16T05:14:00.993Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":1749225,"title":"Nisar sent a message","body":"hi","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":44559,"type":"TEXT","channelId":702,"user":{"id":39827,"type":"PERSON","name":"ss@dd.com","displayName":"Nisar","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Nisar","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"hi","properties":{},"createdTime":"2021-09-14T20:13:37.357Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44559"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39827"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"USER:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/44559.relay"}},"createdTime":"2021-09-14T20:13:49.998Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=SELF"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=NEXT"}},"page":{"size":5}}},"NotificationResource":{"value":{"id":3256308,"title":"System message sent","body":"File attachment","channel":{"id":702,"type":"PUBLIC","name":"Your Awesome Chat Room","displayName":"Your Awesome Chat Room","creator":{"id":352,"type":"PERSON","name":"aaron.nwabuoku@chatkitty.com","displayName":"aaron.nwabuoku@chatkitty.com","displayPictureUrl":"https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"lastReceivedMessage":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z"},"properties":{},"createdTime":"2020-11-23T13:03:17.292Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"data":{"message":{"id":85103,"type":"SYSTEM_FILE","channelId":702,"file":{"type":"EXTERNAL","url":"https://example.com/files/jane.png","name":"jane.png","contentType":"image/png","size":32768},"properties":{},"createdTime":"2022-06-02T16:36:39.169379Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/85103"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},"channelId":702,"type":"SYSTEM:SENT:MESSAGE","_relays":{"message":"/application/v1/messages/85103.relay"}},"createdTime":"2022-06-02T16:36:54.356152Z","_links":{"recipient":{"href":"https://api.chatkitty.com/v1/applications/1/users/36309"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"CursorPagedModelMessageResource":{"value":{"_embedded":{"messages":[{"id":44902,"type":"TEXT","channelId":702,"user":{"id":39953,"type":"PERSON","name":"hey@mailinator.com","displayName":"hey","displayPictureUrl":"https://api.chatkitty.com/v1/picture/hey","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"🌞","properties":{},"createdTime":"2021-09-16T20:45:33.696Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44902"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39953"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":44701,"type":"TEXT","channelId":802,"user":{"id":39906,"type":"PERSON","name":"sean.donald@gmail.com","displayName":"zolo","displayPictureUrl":"https://api.chatkitty.com/v1/picture/zolo","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"test","properties":{},"createdTime":"2021-09-16T14:57:55.903Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44701"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39906"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/802"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":44700,"type":"TEXT","channelId":802,"user":{"id":39906,"type":"PERSON","name":"sean.donald@gmail.com","displayName":"zolo","displayPictureUrl":"https://api.chatkitty.com/v1/picture/zolo","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"hi","properties":{},"createdTime":"2021-09-16T14:57:46.056Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44700"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39906"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/802"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":44760,"type":"TEXT","channelId":1255,"user":{"id":39841,"type":"PERSON","name":"ho@mailinator.com","displayName":"ho","displayPictureUrl":"https://api.chatkitty.com/v1/picture/ho","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"do?","properties":{},"createdTime":"2021-09-16T09:14:09.585Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44760"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39841"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1255"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":44759,"type":"TEXT","channelId":702,"user":{"id":39841,"type":"PERSON","name":"ho@mailinator.com","displayName":"ho","displayPictureUrl":"https://api.chatkitty.com/v1/picture/ho","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"body":"ok","properties":{},"createdTime":"2021-09-16T09:13:48.030Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/44759"},"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/39841"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=SELF"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=NEXT"}},"page":{"size":5}}},"PagedModelChannelResource":{"value":{"_embedded":{"channels":[{"id":15252,"type":"DIRECT","creator":{"id":19652,"type":"PERSON","name":"rexyfexy@gmail.com","displayName":"doark","displayPictureUrl":"https://api.chatkitty.com/v1/picture/doark","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"members":[{"id":19652,"type":"PERSON","name":"rexyfexy@gmail.com","displayName":"doark","displayPictureUrl":"https://api.chatkitty.com/v1/picture/doark","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},{"id":19452,"type":"PERSON","name":"aa","displayName":"emra","displayPictureUrl":"https://api.chatkitty.com/v1/picture/emra","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}}],"properties":{},"createdTime":"2021-05-05T00:38:24.888Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/15252"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/15252/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/15252/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/15252/events"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":55913,"type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7","displayName":"Our public channel","properties":{},"createdTime":"2021-09-28T01:35:40.967Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/55913/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":2402,"type":"PUBLIC","name":"#test","displayName":"Test Channel","creator":{"id":4153,"type":"PERSON","name":"test@mail.com","displayName":"mridx","displayPictureUrl":"https://api.chatkitty.com/v1/picture/mridx","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"properties":{},"createdTime":"2020-12-13T21:12:09.195Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/2402/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":856,"type":"PUBLIC","name":"mkm","displayName":"Meme Channel","creator":{"id":1504,"type":"PERSON","name":"njnj@vghf.jk","displayName":"mkm","displayPictureUrl":"https://api.chatkitty.com/v1/picture/mkm","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"lastReceivedMessage":{"id":17654,"type":"TEXT","channelId":856,"user":{"id":15402,"type":"PERSON","name":"paras@code.co","displayName":"Paras","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Paras","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"body":"ghk","properties":{},"createdTime":"2021-03-31T06:00:28.680Z"},"properties":{},"createdTime":"2020-11-25T07:46:45.775Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/856/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":1302,"type":"PUBLIC","name":"SONU KUMAR","displayName":"SONU KUMAR","creator":{"id":2302,"type":"PERSON","name":"852122","displayName":"SONU KUMAR","displayPictureUrl":"https://api.chatkitty.com/v1/picture/SONU+KUMAR","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"lastReceivedMessage":{"id":44530,"type":"TEXT","channelId":1302,"user":{"id":39826,"type":"PERSON","name":"steve@innersync.com","displayName":"Steve Williams","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Steve+Williams","presence":{"status":"UNAVAILABLE","online":false},"callStatus":"AVAILABLE","properties":{}},"body":"Checking out","properties":{},"createdTime":"2021-09-14T18:02:56.066Z"},"properties":{},"createdTime":"2020-12-02T05:10:01.260Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302"},"participants":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/participants"},"messages":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/messages"},"events":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/events"},"memberships":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/memberships"},"members":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/members"},"moderators":{"href":"https://api.chatkitty.com/v1/applications/1/channels/1302/moderators"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5"}},"page":{"size":5,"totalElements":2020,"totalPages":404,"number":0}}},"PagedModelChatUserResource":{"value":{"_embedded":{"users":[{"id":14503,"type":"PERSON","name":"jane@chatkitty.com","displayName":"Jane","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Jane","presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/14503"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/14503/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/14503/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/14503/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":3004,"type":"PERSON","name":"1","displayName":"ChatKittyUser","displayPictureUrl":"https://api.chatkitty.com/v1/picture/ChatKittyUser","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/3004"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/3004/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/3004/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/3004/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":6152,"type":"PERSON","name":"10zxc13@gmail.com","displayName":"Jack","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Jack","presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/6152"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/6152/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/6152/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/6152/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":3353,"type":"PERSON","name":"12121","displayName":"12121","displayPictureUrl":"https://api.chatkitty.com/v1/picture/12121","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/3353"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/3353/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/3353/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/3353/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":6602,"type":"PERSON","name":"123","displayName":"123","displayPictureUrl":"https://api.chatkitty.com/v1/picture/123","presence":{"status":"UNAVAILABLE","online":false},"properties":{},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/users/6602"},"channels":{"href":"https://api.chatkitty.com/v1/applications/1/users/6602/channels"},"notifications":{"href":"https://api.chatkitty.com/v1/applications/1/users/6602/notifications"},"displayPicture":{"href":"https://api.chatkitty.com/v1/applications/1/users/6602/display-picture"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/users?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/users?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/users?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/users?page=114&size=5"}},"page":{"size":5,"totalElements":571,"totalPages":115,"number":0}}},"ChatUserSessionResource":{"value":{"id":635627,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T08:25:27.253Z","createdTime":"2021-11-12T08:02:34.122Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39805"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}}},"PagedModelChatUserSessionResource":{"value":{"_embedded":{"sessions":[{"id":635627,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T08:25:27.253Z","createdTime":"2021-11-12T08:02:34.122Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39805"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":635641,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T08:35:08.587Z","createdTime":"2021-11-12T08:25:33.885Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39805"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":635669,"user":{"id":39806,"type":"PERSON","name":"c6f75947-af48-4893-a78e-0e0b9bd68580","displayName":"Julie Jaxton","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Julie+Jaxton","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T08:55:36.282Z","createdTime":"2021-11-12T08:38:54.982Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39806"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":635644,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T08:54:48.309Z","createdTime":"2021-11-12T08:45:13.682Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39805"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":635651,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-11-12T09:06:40.409Z","createdTime":"2021-11-12T09:04:53.490Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/14302/users/39805"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/user-sessions?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/user-sessions?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/user-sessions?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/user-sessions?page=328&size=5"}},"page":{"size":5,"totalElements":1645,"totalPages":329,"number":0}}},"ReplyThreadResource":{"value":{"id":67528,"type":"MAIN","properties":{},"createdTime":"2022-02-04T13:19:06.764939Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/threads/67528"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/67026"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"PagedModelChatFunctionResource":{"value":{"_embedded":{"functions":[{"id":202,"type":"user.received.notification","runtime":{"id":1,"type":"NODEJS","version":"v0.0.29"},"name":"User Received Notification","enabled":true,"currentVersionNumber":5,"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/202"},"versions":{"href":"https://api.chatkitty.com/v1/applications/1/functions/202/versions"},"invocations":{"href":"https://api.chatkitty.com/v1/applications/1/functions/202/invocations"},"currentVersion":{"href":"https://api.chatkitty.com/v1/applications/1/functions/202/current-version"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":4552,"type":"user.sent.message","runtime":{"id":1,"type":"NODEJS","version":"v0.0.29"},"name":"User Sent Message","enabled":false,"currentVersionNumber":0,"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/4552"},"versions":{"href":"https://api.chatkitty.com/v1/applications/1/functions/4552/versions"},"invocations":{"href":"https://api.chatkitty.com/v1/applications/1/functions/4552/invocations"},"currentVersion":{"href":"https://api.chatkitty.com/v1/applications/1/functions/4552/current-version"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":6152,"type":"user.started.chat_session","runtime":{"id":1,"type":"NODEJS","version":"v0.0.29"},"name":"User Started Chat Session","enabled":false,"currentVersionNumber":0,"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/6152"},"versions":{"href":"https://api.chatkitty.com/v1/applications/1/functions/6152/versions"},"invocations":{"href":"https://api.chatkitty.com/v1/applications/1/functions/6152/invocations"},"currentVersion":{"href":"https://api.chatkitty.com/v1/applications/1/functions/6152/current-version"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":1,"type":"user.attempted.start_session","runtime":{"id":1,"type":"NODEJS","version":"v0.0.29"},"name":"User Attempted Start Session","enabled":true,"currentVersionNumber":34,"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1"},"versions":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions"},"invocations":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations"},"currentVersion":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/current-version"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions?page=0&size=5"}},"page":{"size":5,"totalElements":4,"totalPages":1,"number":0}}},"MessageReadReceiptResource":{"value":{"user":{"id":1,"type":"PERSON","name":"jane@chatkitty.com","displayName":"Jane Doe","displayPictureUrl":"https://api.chatkitty.com/v1/picture/jane","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"createdTime":"2022-06-02T16:51:03.206366286Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/1"},"message":{"href":"https://api.chatkitty.com/v1/applications/1/messages/67026"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"PagedModelMessageReadReceiptResource":{"value":{"_embedded":{"receipts":[{"user":{"id":1,"type":"PERSON","name":"jane@chatkitty.com","displayName":"Jane Doe","displayPictureUrl":"https://api.chatkitty.com/v1/picture/jane","presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"createdTime":"2022-06-02T16:51:03.206366286Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/1"},"message":{"href":"https://api.chatkitty.com/v1/applications/1/messages/67026"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/messages/67026/read-receipts?page=0&size=25"}},"page":{"size":1,"totalElements":1,"totalPages":1,"number":0}}},"PagedModelApplicationJobResource":{"value":{"_embedded":{"jobs":[{"id":1,"type":"CHANNEL_IMPORT","state":"FAILED","createdTime":"2021-09-28T04:19:41.255Z","endedTime":"2021-09-28T04:19:42.230Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/1"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":52,"type":"CHANNEL_IMPORT","state":"FAILED","createdTime":"2021-09-28T05:30:08.902Z","endedTime":"2021-09-28T05:30:09.571Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/52"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":53,"type":"CHANNEL_IMPORT","state":"FINISHED","createdTime":"2021-09-28T05:30:44.265Z","endedTime":"2021-09-28T05:30:44.692Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/53"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":54,"type":"CHANNEL_IMPORT","state":"FINISHED","createdTime":"2021-09-28T05:35:35.075Z","endedTime":"2021-09-28T05:36:15.755Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/54"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":102,"type":"CHANNEL_MEMBERS_IMPORT","state":"FINISHED","createdTime":"2021-09-29T04:52:22.895Z","endedTime":"2021-09-29T04:52:58.941Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs/102"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/jobs?running=false&page=0&size=25"}},"page":{"size":25,"totalElements":5,"totalPages":1,"number":0}}},"PagedModelChatFunctionVersionResource":{"value":{"_embedded":{"versions":[{"id":13515,"versionNumber":34,"handlerScript":"const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello ' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/13515"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":13461,"versionNumber":33,"handlerScript":"const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello!');\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/13461"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":4802,"versionNumber":32,"handlerScript":"async function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return {payload: true};\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/4802"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":4652,"versionNumber":31,"handlerScript":"async function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return true;\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/4652"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":4555,"versionNumber":30,"handlerScript":"async function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return {\n status: \"SUCCESS\"\n };\n}","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/function-versions/4555"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=6&size=5"}},"page":{"size":5,"totalElements":35,"totalPages":7,"number":0}}},"PagedModelChatFunctionInvocationResource":{"value":{"_embedded":{"invocations":[{"id":468510,"versionNumber":34,"args":{"authParams":{"displayName":"Niyati"},"username":"asac@sfas.com"},"status":"SUCCEEDED","result":{"payload":["Hello asac@sfas.com"]},"createdTime":"2021-09-20T06:37:01.766Z","_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":468453,"versionNumber":34,"args":{"authParams":{"displayName":""},"username":""},"status":"SUCCEEDED","result":{"payload":["Hello ","Hello "]},"createdTime":"2021-09-19T09:34:40.190Z","_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":468452,"versionNumber":34,"args":{"authParams":{"displayName":""},"username":""},"status":"SUCCEEDED","result":{"payload":["Hello "]},"createdTime":"2021-09-19T09:34:26.890Z","_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":467243,"versionNumber":34,"args":{"authParams":{"displayName":""},"username":"aaron"},"status":"SUCCEEDED","result":{"payload":["Hello aaron"]},"createdTime":"2021-09-17T17:00:31.396Z","_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"id":467162,"versionNumber":34,"args":{"authParams":{"displayName":"bob"},"username":"fwfe@efw.com"},"status":"SUCCEEDED","result":{"payload":["Hello fwfe@efw.com"]},"createdTime":"2021-09-17T09:15:50.072Z","_links":{"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1515&size=5"}},"page":{"size":5,"totalElements":7578,"totalPages":1516,"number":0}}},"ChatSessionResource":{"value":{"id":1480794,"session":{"id":544188,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-19T04:35:43.576Z","createdTime":"2021-09-19T04:28:48.442Z"},"state":"ENDED","endTime":"2021-09-19T04:33:41.677Z","createdTime":"2021-09-19T04:33:40.657Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/544188"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55002"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}}},"PagedModelChatSessionResource":{"value":{"_embedded":{"sessions":[{"id":1480794,"session":{"id":544188,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-19T04:35:43.576Z","createdTime":"2021-09-19T04:28:48.442Z"},"state":"ENDED","endTime":"2021-09-19T04:33:41.677Z","createdTime":"2021-09-19T04:33:40.657Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/544188"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55002"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":1480795,"session":{"id":544188,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-19T04:35:43.576Z","createdTime":"2021-09-19T04:28:48.442Z"},"state":"ENDED","endTime":"2021-09-19T04:35:43.597Z","createdTime":"2021-09-19T04:33:41.710Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/544188"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55052"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":1480731,"session":{"id":544216,"user":{"id":39805,"type":"PERSON","name":"b2a6da08-88bf-4778-b993-7234e6d8a3ff","displayName":"Joni Jordyn","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Joni+Jordyn","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-19T04:38:45.272Z","createdTime":"2021-09-19T04:35:45.028Z"},"state":"ENDED","endTime":"2021-09-19T04:35:55.360Z","createdTime":"2021-09-19T04:35:45.685Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/544216"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55052"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":1481281,"session":{"id":545001,"user":{"id":39806,"type":"PERSON","name":"c6f75947-af48-4893-a78e-0e0b9bd68580","displayName":"Julie Jaxton","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Julie+Jaxton","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-20T12:13:12.242Z","createdTime":"2021-09-20T12:13:09.900Z"},"state":"ENDED","endTime":"2021-09-20T12:13:12.255Z","createdTime":"2021-09-20T12:13:10.352Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/545001"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55002"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}},{"id":1481282,"session":{"id":545052,"user":{"id":39807,"type":"PERSON","name":"8fadc920-f3e6-49ff-9398-1e58b3dc44dd","displayName":"Zaria Bria","displayPictureUrl":"https://api.chatkitty.com/v1/picture/Zaria+Bria","isGuest":true,"presence":{"status":"UNAVAILABLE","online":false},"properties":{}},"state":"ENDED","userAgent":"ChatKitty-JS/1.50.0","endTime":"2021-09-20T12:13:22.564Z","createdTime":"2021-09-20T12:13:20.105Z"},"state":"ENDED","endTime":"2021-09-20T12:13:22.575Z","createdTime":"2021-09-20T12:13:20.553Z","_links":{"session":{"href":"https://api.chatkitty.com/v1/applications/14302/user-sessions/545052"},"channel":{"href":"https://api.chatkitty.com/v1/applications/14302/channels/55002"},"application":{"href":"https://api.chatkitty.com/v1/applications/14302"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/chat-sessions?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/chat-sessions?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/chat-sessions?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/chat-sessions?page=1037&size=5"}},"page":{"size":5,"totalElements":5190,"totalPages":1038,"number":0}}},"PagedModelChannelMembershipResource":{"value":{"_embedded":{"memberships":[{"createdTime":"2020-12-02T21:52:33.976Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/2"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"member":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members/2"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"createdTime":"2020-12-02T22:03:28.742Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/52"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"member":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members/52"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"createdTime":"2020-11-23T13:03:17.433Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/352"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"member":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members/352"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"createdTime":"2020-12-07T22:28:47.620Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/403"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"member":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members/403"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}},{"createdTime":"2020-11-23T14:34:29.580Z","_links":{"user":{"href":"https://api.chatkitty.com/v1/applications/1/users/452"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702"},"member":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/members/452"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"first":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5"},"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5"},"next":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=1&size=5"},"last":{"href":"https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=107&size=5"}},"page":{"size":5,"totalElements":537,"totalPages":108,"number":0}}},"PagedModelChannelInviteResource":{"value":{"_embedded":{"invites":[{"createdTime":"2022-06-02T16:51:03.206366Z","_links":{"invitee":{"href":"https://api.chatkitty.com/v1/applications/1/users/1054"},"channel":{"href":"https://api.chatkitty.com/v1/applications/1/channels/67026"},"application":{"href":"https://api.chatkitty.com/v1/applications/1"}}}]},"_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1/channels/67026/invites?page=0&size=25"}},"page":{"size":25,"totalElements":1,"totalPages":1,"number":0}}},"ApplicationResource":{"value":{"id":1,"key":"19b458d0-2b50-491c-8f13-65ec12f3978e","properties":{},"created_time":"2020-10-02T20:29:25.316Z","_links":{"self":{"href":"https://api.chatkitty.com/v1/applications/1"}}}},"Link":{"value":{"href":"https://api.chatkitty.com/v1/applications/1"}},"MessageImport":{"value":{"idempotencyKey":"unique-external-id","type":"TEXT","body":"Hello, World!"}},"ChatUserImport":{"value":{"name":"jane@chatkitty.com","displayName":"Jane Doe","isGuest":false,"properties":{"favoriteNumber":42}}},"ChannelMembershipImport":{"value":{"username":"jane@chatkitty.com"}},"ChannelImport":{"value":{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["jane@chatkitty.com","john@chatkitty.com"]}},"DirectChannelImport":{"value":{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["jane@chatkitty.com","john@chatkitty.com"]}},"TextSystemMessageImport":{"value":{"type":"TEXT","body":"Hello, World!"}},"TextChatUserMessageImport":{"value":{"type":"TEXT","body":"Hello, World!","user":"jane@chatkitty.com"}},"PublicChannelImport":{"value":{"idempotencyKey":"unique-external-id","type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7"}},"PrivateChannelImport":{"value":{"idempotencyKey":"unique-external-id","type":"PUBLIC","name":"b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7"}}},"securitySchemes":{"application_authorization":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://authorization.chatkitty.com/oauth/token","refreshUrl":"https://authorization.chatkitty.com/oauth/token","scopes":{"create:*":"Create application resources","read:*":"Read application resources","update:*":"Update application resources","delete:*":"Delete application resources"}}}}}}}
\ No newline at end of file
diff --git a/examples/android-example/models/docs/AddChannelMemberRequest.md b/examples/android-example/models/docs/AddChannelMemberRequest.md
new file mode 100644
index 00000000..50ac734e
--- /dev/null
+++ b/examples/android-example/models/docs/AddChannelMemberRequest.md
@@ -0,0 +1,11 @@
+
+# AddChannelMemberRequest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** | User ID associated with this user |
+**username** | **kotlin.String** | Username associated with this user |
+
+
+
diff --git a/examples/android-example/models/docs/AnalyticsApi.md b/examples/android-example/models/docs/AnalyticsApi.md
new file mode 100644
index 00000000..b949988b
--- /dev/null
+++ b/examples/android-example/models/docs/AnalyticsApi.md
@@ -0,0 +1,100 @@
+# AnalyticsApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**exportMessageAnalytics**](AnalyticsApi.md#exportMessageAnalytics) | **POST** /v1/analytics/messages | Export message analytics
+[**exportUserAnalytics**](AnalyticsApi.md#exportUserAnalytics) | **POST** /v1/analytics/users | Export user analytics
+
+
+
+# **exportMessageAnalytics**
+> ApplicationJobResource exportMessageAnalytics()
+
+Export message analytics
+
+Batch export message analytics data
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = AnalyticsApi()
+try {
+ val result : ApplicationJobResource = apiInstance.exportMessageAnalytics()
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling AnalyticsApi#exportMessageAnalytics")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling AnalyticsApi#exportMessageAnalytics")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**ApplicationJobResource**](ApplicationJobResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **exportUserAnalytics**
+> ApplicationJobResource exportUserAnalytics()
+
+Export user analytics
+
+Batch export user analytics data
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = AnalyticsApi()
+try {
+ val result : ApplicationJobResource = apiInstance.exportUserAnalytics()
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling AnalyticsApi#exportUserAnalytics")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling AnalyticsApi#exportUserAnalytics")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**ApplicationJobResource**](ApplicationJobResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/ApiError.md b/examples/android-example/models/docs/ApiError.md
new file mode 100644
index 00000000..86fa8dc2
--- /dev/null
+++ b/examples/android-example/models/docs/ApiError.md
@@ -0,0 +1,14 @@
+
+# ApiError
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**error** | **kotlin.String** | |
+**message** | **kotlin.String** | |
+**timestamp** | **kotlin.String** | |
+**explanation** | **kotlin.String** | | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ApplicationApi.md b/examples/android-example/models/docs/ApplicationApi.md
new file mode 100644
index 00000000..93e97529
--- /dev/null
+++ b/examples/android-example/models/docs/ApplicationApi.md
@@ -0,0 +1,150 @@
+# ApplicationApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**retrieveAuthenticatedApplication**](ApplicationApi.md#retrieveAuthenticatedApplication) | **GET** /v1/application | Retrieve the authenticated application
+[**retrieveAuthenticatedApplicationSettings**](ApplicationApi.md#retrieveAuthenticatedApplicationSettings) | **GET** /v1/application/settings | Retrieve the authenticated application settings
+[**updateAuthenticatedApplicationSettings**](ApplicationApi.md#updateAuthenticatedApplicationSettings) | **PUT** /v1/application/settings | Update the authenticated application settings
+
+
+
+# **retrieveAuthenticatedApplication**
+> ApplicationResource retrieveAuthenticatedApplication()
+
+Retrieve the authenticated application
+
+Returns the ChatKitty application associated with the authentication credentials used. You must use an **OAuth V2 Bearer token** to access this endpoint.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ApplicationApi()
+try {
+ val result : ApplicationResource = apiInstance.retrieveAuthenticatedApplication()
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ApplicationApi#retrieveAuthenticatedApplication")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ApplicationApi#retrieveAuthenticatedApplication")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**ApplicationResource**](ApplicationResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **retrieveAuthenticatedApplicationSettings**
+> ApplicationSettingsResource retrieveAuthenticatedApplicationSettings()
+
+Retrieve the authenticated application settings
+
+Returns the current settings configuring this application
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ApplicationApi()
+try {
+ val result : ApplicationSettingsResource = apiInstance.retrieveAuthenticatedApplicationSettings()
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ApplicationApi#retrieveAuthenticatedApplicationSettings")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ApplicationApi#retrieveAuthenticatedApplicationSettings")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**ApplicationSettingsResource**](ApplicationSettingsResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **updateAuthenticatedApplicationSettings**
+> ApplicationSettingsResource updateAuthenticatedApplicationSettings(applicationSettingsProperties)
+
+Update the authenticated application settings
+
+Update the settings configuring this application
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ApplicationApi()
+val applicationSettingsProperties : ApplicationSettingsProperties = // ApplicationSettingsProperties |
+try {
+ val result : ApplicationSettingsResource = apiInstance.updateAuthenticatedApplicationSettings(applicationSettingsProperties)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ApplicationApi#updateAuthenticatedApplicationSettings")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ApplicationApi#updateAuthenticatedApplicationSettings")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **applicationSettingsProperties** | [**ApplicationSettingsProperties**](ApplicationSettingsProperties.md)| |
+
+### Return type
+
+[**ApplicationSettingsResource**](ApplicationSettingsResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/ApplicationJobResource.md b/examples/android-example/models/docs/ApplicationJobResource.md
new file mode 100644
index 00000000..ef192ae8
--- /dev/null
+++ b/examples/android-example/models/docs/ApplicationJobResource.md
@@ -0,0 +1,30 @@
+
+# ApplicationJobResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of application job |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | |
+**state** | [**inline**](#State) | The running state of an application job |
+**endedTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | | [optional]
+**file** | **kotlin.String** | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | CHANNEL_IMPORT, CHANNEL_MEMBERS_IMPORT, MESSAGE_IMPORT, USER_IMPORT, MESSAGE_ANALYTICS_EXPORT
+
+
+
+## Enum: state
+Name | Value
+---- | -----
+state | PENDING, RUNNING, FINISHED, FAILED
+
+
+
diff --git a/examples/android-example/models/docs/ApplicationResource.md b/examples/android-example/models/docs/ApplicationResource.md
new file mode 100644
index 00000000..b71b2059
--- /dev/null
+++ b/examples/android-example/models/docs/ApplicationResource.md
@@ -0,0 +1,14 @@
+
+# ApplicationResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | ISO date-time this application was created |
+**key** | **kotlin.String** | Primary API key assigned to this application |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom properties attached to this application |
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ApplicationSentSystemMessageNotificationData.md b/examples/android-example/models/docs/ApplicationSentSystemMessageNotificationData.md
new file mode 100644
index 00000000..1987c806
--- /dev/null
+++ b/examples/android-example/models/docs/ApplicationSentSystemMessageNotificationData.md
@@ -0,0 +1,12 @@
+
+# ApplicationSentSystemMessageNotificationData
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**channelId** | **kotlin.Long** | The ID channel the message was sent. Deprecated: Use the channel property of this notification |
+**message** | [**SystemMessageResource**](SystemMessageResource.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/ApplicationSettingsProperties.md b/examples/android-example/models/docs/ApplicationSettingsProperties.md
new file mode 100644
index 00000000..5594f2e4
--- /dev/null
+++ b/examples/android-example/models/docs/ApplicationSettingsProperties.md
@@ -0,0 +1,25 @@
+
+# ApplicationSettingsProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**guestUsers** | [**inline**](#GuestUsers) | Toggle state of this settings option |
+**userCreatedChannels** | [**inline**](#UserCreatedChannels) | Toggle state of this settings option |
+
+
+
+## Enum: guestUsers
+Name | Value
+---- | -----
+guestUsers | DISABLED, ENABLED
+
+
+
+## Enum: userCreatedChannels
+Name | Value
+---- | -----
+userCreatedChannels | DISABLED, ENABLED
+
+
+
diff --git a/examples/android-example/models/docs/ApplicationSettingsResource.md b/examples/android-example/models/docs/ApplicationSettingsResource.md
new file mode 100644
index 00000000..99e2d132
--- /dev/null
+++ b/examples/android-example/models/docs/ApplicationSettingsResource.md
@@ -0,0 +1,26 @@
+
+# ApplicationSettingsResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**guestUsers** | [**inline**](#GuestUsers) | Toggle state of this settings option |
+**userCreatedChannels** | [**inline**](#UserCreatedChannels) | Toggle state of this settings option |
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: guestUsers
+Name | Value
+---- | -----
+guestUsers | DISABLED, ENABLED
+
+
+
+## Enum: userCreatedChannels
+Name | Value
+---- | -----
+userCreatedChannels | DISABLED, ENABLED
+
+
+
diff --git a/examples/android-example/models/docs/AuthenticationError.md b/examples/android-example/models/docs/AuthenticationError.md
new file mode 100644
index 00000000..8a915c77
--- /dev/null
+++ b/examples/android-example/models/docs/AuthenticationError.md
@@ -0,0 +1,11 @@
+
+# AuthenticationError
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**error** | **kotlin.String** | |
+**errorDescription** | **kotlin.String** | |
+
+
+
diff --git a/examples/android-example/models/docs/ChannelGenericEventResource.md b/examples/android-example/models/docs/ChannelGenericEventResource.md
new file mode 100644
index 00000000..315c37d5
--- /dev/null
+++ b/examples/android-example/models/docs/ChannelGenericEventResource.md
@@ -0,0 +1,13 @@
+
+# ChannelGenericEventResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | Custom type of this event |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this event |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChannelImport.md b/examples/android-example/models/docs/ChannelImport.md
new file mode 100644
index 00000000..f9a5f111
--- /dev/null
+++ b/examples/android-example/models/docs/ChannelImport.md
@@ -0,0 +1,14 @@
+
+# ChannelImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**members** | **kotlin.collections.List<kotlin.String>** | List of usernames of members of this channel |
+**creator** | **kotlin.String** | Username of the user who created this channel | [optional]
+**idempotencyKey** | **kotlin.String** | Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChannelInviteResource.md b/examples/android-example/models/docs/ChannelInviteResource.md
new file mode 100644
index 00000000..5994c1c4
--- /dev/null
+++ b/examples/android-example/models/docs/ChannelInviteResource.md
@@ -0,0 +1,11 @@
+
+# ChannelInviteResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this invite was created |
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChannelMembershipImport.md b/examples/android-example/models/docs/ChannelMembershipImport.md
new file mode 100644
index 00000000..101439dc
--- /dev/null
+++ b/examples/android-example/models/docs/ChannelMembershipImport.md
@@ -0,0 +1,11 @@
+
+# ChannelMembershipImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**username** | **kotlin.String** | Username of the user to be added as a member |
+**idempotencyKey** | **kotlin.String** | Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChannelMembershipResource.md b/examples/android-example/models/docs/ChannelMembershipResource.md
new file mode 100644
index 00000000..baa49144
--- /dev/null
+++ b/examples/android-example/models/docs/ChannelMembershipResource.md
@@ -0,0 +1,11 @@
+
+# ChannelMembershipResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | |
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChannelMessageMentionProperties.md b/examples/android-example/models/docs/ChannelMessageMentionProperties.md
new file mode 100644
index 00000000..1e630c31
--- /dev/null
+++ b/examples/android-example/models/docs/ChannelMessageMentionProperties.md
@@ -0,0 +1,10 @@
+
+# ChannelMessageMentionProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**channel** | [**MessageMentionChannelProperties**](MessageMentionChannelProperties.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/ChannelProperties.md b/examples/android-example/models/docs/ChannelProperties.md
new file mode 100644
index 00000000..203e56ec
--- /dev/null
+++ b/examples/android-example/models/docs/ChannelProperties.md
@@ -0,0 +1,22 @@
+
+# ChannelProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this channel |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this channel was created |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel |
+**creator** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**lastReceivedMessage** | [**MessageProperties**](MessageProperties.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | DIRECT, PUBLIC, PRIVATE
+
+
+
diff --git a/examples/android-example/models/docs/ChannelPropertiesPatch.md b/examples/android-example/models/docs/ChannelPropertiesPatch.md
new file mode 100644
index 00000000..8bad0a9b
--- /dev/null
+++ b/examples/android-example/models/docs/ChannelPropertiesPatch.md
@@ -0,0 +1,11 @@
+
+# ChannelPropertiesPatch
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**displayName** | **kotlin.String** | Updates human readable name of this channel | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Updates custom data associated with this channel | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChannelResource.md b/examples/android-example/models/docs/ChannelResource.md
new file mode 100644
index 00000000..32096751
--- /dev/null
+++ b/examples/android-example/models/docs/ChannelResource.md
@@ -0,0 +1,26 @@
+
+# ChannelResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this channel |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this channel was created |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel |
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users |
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel |
+**members** | [**kotlin.collections.List<ChatUserProperties>**](ChatUserProperties.md) | The members of this channel. Present if this is a direct channel. For other channel types, use [**list channel messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) |
+**creator** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**lastReceivedMessage** | [**MessageProperties**](MessageProperties.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | DIRECT, PUBLIC, PRIVATE
+
+
+
diff --git a/examples/android-example/models/docs/ChannelsApi.md b/examples/android-example/models/docs/ChannelsApi.md
new file mode 100644
index 00000000..cdbc7716
--- /dev/null
+++ b/examples/android-example/models/docs/ChannelsApi.md
@@ -0,0 +1,1032 @@
+# ChannelsApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**addChannelMember**](ChannelsApi.md#addChannelMember) | **POST** /v1/channels/{id}/members | Add a channel member
+[**addChannelModerator**](ChannelsApi.md#addChannelModerator) | **POST** /v1/channels/{id}/moderators | Add a channel moderator
+[**createChannel**](ChannelsApi.md#createChannel) | **POST** /v1/channels | Create a channel
+[**deleteChannel**](ChannelsApi.md#deleteChannel) | **DELETE** /v1/channels/{id} | Delete a channel
+[**listChannelInvites**](ChannelsApi.md#listChannelInvites) | **GET** /v1/channels/{id}/invites | List channel invites
+[**listChannelMembers**](ChannelsApi.md#listChannelMembers) | **GET** /v1/channels/{id}/members | List a channel's members
+[**listChannelMemberships**](ChannelsApi.md#listChannelMemberships) | **GET** /v1/channels/{id}/memberships | List channel memberships
+[**listChannelMessages**](ChannelsApi.md#listChannelMessages) | **GET** /v1/channels/{id}/messages | List channel messages
+[**listChannelModerators**](ChannelsApi.md#listChannelModerators) | **GET** /v1/channels/{id}/moderators | Lists a channel's moderators
+[**listChannelParticipants**](ChannelsApi.md#listChannelParticipants) | **GET** /v1/channels/{id}/participants | List channel participants
+[**listChannels**](ChannelsApi.md#listChannels) | **GET** /v1/channels | List channels
+[**removeChannelMember**](ChannelsApi.md#removeChannelMember) | **DELETE** /v1/channels/{id}/members/{user_id} | Remove a channel member
+[**removeChannelModerator**](ChannelsApi.md#removeChannelModerator) | **DELETE** /v1/channels/{id}/moderators/{user_id} | Remove a channel moderator
+[**retrieveChannel**](ChannelsApi.md#retrieveChannel) | **GET** /v1/channels/{id} | Retrieve a channel
+[**sendChannelEvent**](ChannelsApi.md#sendChannelEvent) | **POST** /v1/channels/{id}/events | Send a channel event
+[**sendChannelInvite**](ChannelsApi.md#sendChannelInvite) | **POST** /v1/channels/{id}/invites | Send a channel invite
+[**sendChannelKeystrokes**](ChannelsApi.md#sendChannelKeystrokes) | **POST** /v1/channels/{id}/keystrokes | Send channel keystrokes
+[**sendChannelMessage**](ChannelsApi.md#sendChannelMessage) | **POST** /v1/channels/{id}/messages | Send a channel message
+[**updateChannel**](ChannelsApi.md#updateChannel) | **PATCH** /v1/channels/{id} | Update a channel
+
+
+
+# **addChannelMember**
+> ChannelResource addChannelMember(id, addChannelMemberRequest)
+
+Add a channel member
+
+Makes a user a group channel member
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val addChannelMemberRequest : AddChannelMemberRequest = // AddChannelMemberRequest |
+try {
+ val result : ChannelResource = apiInstance.addChannelMember(id, addChannelMemberRequest)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#addChannelMember")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#addChannelMember")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **addChannelMemberRequest** | [**AddChannelMemberRequest**](AddChannelMemberRequest.md)| |
+
+### Return type
+
+[**ChannelResource**](ChannelResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **addChannelModerator**
+> ChatUserResource addChannelModerator(id, addChannelMemberRequest)
+
+Add a channel moderator
+
+Makes a user a group channel moderator
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val addChannelMemberRequest : AddChannelMemberRequest = // AddChannelMemberRequest |
+try {
+ val result : ChatUserResource = apiInstance.addChannelModerator(id, addChannelMemberRequest)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#addChannelModerator")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#addChannelModerator")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **addChannelMemberRequest** | [**AddChannelMemberRequest**](AddChannelMemberRequest.md)| |
+
+### Return type
+
+[**ChatUserResource**](ChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **createChannel**
+> ChannelResource createChannel(createChannelRequest)
+
+Create a channel
+
+Creates a new channel or returns an equivalent existing channel
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val createChannelRequest : CreateChannelRequest = // CreateChannelRequest |
+try {
+ val result : ChannelResource = apiInstance.createChannel(createChannelRequest)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#createChannel")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#createChannel")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **createChannelRequest** | [**CreateChannelRequest**](CreateChannelRequest.md)| |
+
+### Return type
+
+[**ChannelResource**](ChannelResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **deleteChannel**
+> ApplicationResource deleteChannel(id)
+
+Delete a channel
+
+Deletes a channel by ID
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+try {
+ val result : ApplicationResource = apiInstance.deleteChannel(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#deleteChannel")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#deleteChannel")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+
+### Return type
+
+[**ApplicationResource**](ApplicationResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listChannelInvites**
+> PagedModelChannelInviteResource listChannelInvites(id, page, size, sort)
+
+List channel invites
+
+Returns a page of invites sent to join this channel
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+try {
+ val result : PagedModelChannelInviteResource = apiInstance.listChannelInvites(id, page, size, sort)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#listChannelInvites")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#listChannelInvites")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+
+### Return type
+
+[**PagedModelChannelInviteResource**](PagedModelChannelInviteResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listChannelMembers**
+> PagedModelChatUserResource listChannelMembers(id, page, size, sort)
+
+List a channel's members
+
+Returns a page of channel members
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+try {
+ val result : PagedModelChatUserResource = apiInstance.listChannelMembers(id, page, size, sort)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#listChannelMembers")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#listChannelMembers")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+
+### Return type
+
+[**PagedModelChatUserResource**](PagedModelChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listChannelMemberships**
+> PagedModelChannelMembershipResource listChannelMemberships(id, page, size, sort)
+
+List channel memberships
+
+Returns a page of channel membership info for this channel
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+try {
+ val result : PagedModelChannelMembershipResource = apiInstance.listChannelMemberships(id, page, size, sort)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#listChannelMemberships")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#listChannelMemberships")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+
+### Return type
+
+[**PagedModelChannelMembershipResource**](PagedModelChannelMembershipResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listChannelMessages**
+> CursorPagedModelMessageResource listChannelMessages(id, size, start, next, relation, username, query)
+
+List channel messages
+
+Returns a page of messages sent in this channel
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val start : kotlin.Long = 789 // kotlin.Long | Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages
+val next : kotlin.Long = 789 // kotlin.Long | Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages
+val relation : kotlin.String = relation_example // kotlin.String | Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages
+val username : kotlin.String = username_example // kotlin.String |
+val query : kotlin.String = query_example // kotlin.String |
+try {
+ val result : CursorPagedModelMessageResource = apiInstance.listChannelMessages(id, size, start, next, relation, username, query)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#listChannelMessages")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#listChannelMessages")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional]
+ **start** | **kotlin.Long**| Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages | [optional]
+ **next** | **kotlin.Long**| Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages | [optional]
+ **relation** | **kotlin.String**| Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages | [optional] [enum: SELF, PREVIOUS, NEXT]
+ **username** | **kotlin.String**| | [optional]
+ **query** | **kotlin.String**| | [optional]
+
+### Return type
+
+[**CursorPagedModelMessageResource**](CursorPagedModelMessageResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listChannelModerators**
+> PagedModelChatUserResource listChannelModerators(id, page, size, sort)
+
+Lists a channel's moderators
+
+Returns a page of channel moderators
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+try {
+ val result : PagedModelChatUserResource = apiInstance.listChannelModerators(id, page, size, sort)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#listChannelModerators")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#listChannelModerators")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+
+### Return type
+
+[**PagedModelChatUserResource**](PagedModelChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listChannelParticipants**
+> PagedModelChatUserResource listChannelParticipants(id, page, size, sort)
+
+List channel participants
+
+Returns a page of channel active participants: members that currently online
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+try {
+ val result : PagedModelChatUserResource = apiInstance.listChannelParticipants(id, page, size, sort)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#listChannelParticipants")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#listChannelParticipants")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+
+### Return type
+
+[**PagedModelChatUserResource**](PagedModelChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listChannels**
+> PagedModelChannelResource listChannels(page, size, sort, type, members, startTime, endTime, properties)
+
+List channels
+
+Returns a page of channels belonging to this application
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+val type : kotlin.String = type_example // kotlin.String | Filters by channel type
+val members : kotlin.collections.Set = // kotlin.collections.Set | Filters by channel members using their usernames
+val startTime : java.time.OffsetDateTime = 2013-10-20T19:20:30+01:00 // java.time.OffsetDateTime | Filters for channels created within a time range: start time
+val endTime : java.time.OffsetDateTime = 2013-10-20T19:20:30+01:00 // java.time.OffsetDateTime | Filters for channels created within a time range: end time
+val properties : kotlin.String = properties_example // kotlin.String | Filters by channel custom properties
+try {
+ val result : PagedModelChannelResource = apiInstance.listChannels(page, size, sort, type, members, startTime, endTime, properties)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#listChannels")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#listChannels")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+ **type** | **kotlin.String**| Filters by channel type | [optional] [enum: DIRECT, PUBLIC, PRIVATE]
+ **members** | [**kotlin.collections.Set<kotlin.String>**](kotlin.String.md)| Filters by channel members using their usernames | [optional]
+ **startTime** | **java.time.OffsetDateTime**| Filters for channels created within a time range: start time | [optional]
+ **endTime** | **java.time.OffsetDateTime**| Filters for channels created within a time range: end time | [optional]
+ **properties** | **kotlin.String**| Filters by channel custom properties | [optional]
+
+### Return type
+
+[**PagedModelChannelResource**](PagedModelChannelResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **removeChannelMember**
+> ChannelResource removeChannelMember(id, userId)
+
+Remove a channel member
+
+Removes a member from a group channel
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val userId : kotlin.Long = 789 // kotlin.Long | User ID of member to be removed
+try {
+ val result : ChannelResource = apiInstance.removeChannelMember(id, userId)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#removeChannelMember")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#removeChannelMember")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **userId** | **kotlin.Long**| User ID of member to be removed |
+
+### Return type
+
+[**ChannelResource**](ChannelResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **removeChannelModerator**
+> ChannelResource removeChannelModerator(id, userId)
+
+Remove a channel moderator
+
+Removes a moderator from a group channel
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val userId : kotlin.Long = 789 // kotlin.Long | User ID of moderator to be removed
+try {
+ val result : ChannelResource = apiInstance.removeChannelModerator(id, userId)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#removeChannelModerator")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#removeChannelModerator")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **userId** | **kotlin.Long**| User ID of moderator to be removed |
+
+### Return type
+
+[**ChannelResource**](ChannelResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **retrieveChannel**
+> ChannelResource retrieveChannel(id)
+
+Retrieve a channel
+
+Returns a channel by ID
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+try {
+ val result : ChannelResource = apiInstance.retrieveChannel(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#retrieveChannel")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#retrieveChannel")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+
+### Return type
+
+[**ChannelResource**](ChannelResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **sendChannelEvent**
+> ChannelGenericEventResource sendChannelEvent(id, createChannelGenericEventResource)
+
+Send a channel event
+
+Sends a custom channel event
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val createChannelGenericEventResource : CreateChannelGenericEventResource = // CreateChannelGenericEventResource |
+try {
+ val result : ChannelGenericEventResource = apiInstance.sendChannelEvent(id, createChannelGenericEventResource)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#sendChannelEvent")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#sendChannelEvent")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **createChannelGenericEventResource** | [**CreateChannelGenericEventResource**](CreateChannelGenericEventResource.md)| |
+
+### Return type
+
+[**ChannelGenericEventResource**](ChannelGenericEventResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **sendChannelInvite**
+> ChannelInviteResource sendChannelInvite(id, createChannelInviteResource)
+
+Send a channel invite
+
+Sends a channel invite to user
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val createChannelInviteResource : CreateChannelInviteResource = // CreateChannelInviteResource |
+try {
+ val result : ChannelInviteResource = apiInstance.sendChannelInvite(id, createChannelInviteResource)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#sendChannelInvite")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#sendChannelInvite")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **createChannelInviteResource** | [**CreateChannelInviteResource**](CreateChannelInviteResource.md)| |
+
+### Return type
+
+[**ChannelInviteResource**](ChannelInviteResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **sendChannelKeystrokes**
+> ReplyThreadKeystrokesResource sendChannelKeystrokes(id, createDelegatedReplyThreadKeystrokesResource)
+
+Send channel keystrokes
+
+Sends keystrokes in this channel on behalf of a user
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long |
+val createDelegatedReplyThreadKeystrokesResource : CreateDelegatedReplyThreadKeystrokesResource = // CreateDelegatedReplyThreadKeystrokesResource |
+try {
+ val result : ReplyThreadKeystrokesResource = apiInstance.sendChannelKeystrokes(id, createDelegatedReplyThreadKeystrokesResource)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#sendChannelKeystrokes")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#sendChannelKeystrokes")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| |
+ **createDelegatedReplyThreadKeystrokesResource** | [**CreateDelegatedReplyThreadKeystrokesResource**](CreateDelegatedReplyThreadKeystrokesResource.md)| |
+
+### Return type
+
+[**ReplyThreadKeystrokesResource**](ReplyThreadKeystrokesResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **sendChannelMessage**
+> MessageResource sendChannelMessage(id, sendChannelMessageRequest)
+
+Send a channel message
+
+Sends a message in this channel as the system or on behalf of a user
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val sendChannelMessageRequest : SendChannelMessageRequest = // SendChannelMessageRequest |
+try {
+ val result : MessageResource = apiInstance.sendChannelMessage(id, sendChannelMessageRequest)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#sendChannelMessage")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#sendChannelMessage")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **sendChannelMessageRequest** | [**SendChannelMessageRequest**](SendChannelMessageRequest.md)| |
+
+### Return type
+
+[**MessageResource**](MessageResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **updateChannel**
+> ChannelResource updateChannel(id, channelPropertiesPatch)
+
+Update a channel
+
+Updates a channel properties
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChannelsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Channel ID
+val channelPropertiesPatch : ChannelPropertiesPatch = // ChannelPropertiesPatch |
+try {
+ val result : ChannelResource = apiInstance.updateChannel(id, channelPropertiesPatch)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChannelsApi#updateChannel")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChannelsApi#updateChannel")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Channel ID |
+ **channelPropertiesPatch** | [**ChannelPropertiesPatch**](ChannelPropertiesPatch.md)| | [optional]
+
+### Return type
+
+[**ChannelResource**](ChannelResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/ChatFunctionChatRuntimeProperties.md b/examples/android-example/models/docs/ChatFunctionChatRuntimeProperties.md
new file mode 100644
index 00000000..34bc21dd
--- /dev/null
+++ b/examples/android-example/models/docs/ChatFunctionChatRuntimeProperties.md
@@ -0,0 +1,19 @@
+
+# ChatFunctionChatRuntimeProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this runtime. Always NODEJS |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**version** | **kotlin.String** | The semantic version of this runtime |
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | NODEJS
+
+
+
diff --git a/examples/android-example/models/docs/ChatFunctionInvocationResource.md b/examples/android-example/models/docs/ChatFunctionInvocationResource.md
new file mode 100644
index 00000000..859b498e
--- /dev/null
+++ b/examples/android-example/models/docs/ChatFunctionInvocationResource.md
@@ -0,0 +1,23 @@
+
+# ChatFunctionInvocationResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**args** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | The function arguments passed into this function for this invocation |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time of this invocation when the function was called |
+**result** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | The result of this invocation when it completed |
+**status** | [**inline**](#Status) | The running status of this invocation |
+**versionNumber** | **kotlin.Long** | The version number of this function version when this invocation occured |
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: status
+Name | Value
+---- | -----
+status | RUNNING, SUCCEEDED, FAILED
+
+
+
diff --git a/examples/android-example/models/docs/ChatFunctionResource.md b/examples/android-example/models/docs/ChatFunctionResource.md
new file mode 100644
index 00000000..5fde37bb
--- /dev/null
+++ b/examples/android-example/models/docs/ChatFunctionResource.md
@@ -0,0 +1,17 @@
+
+# ChatFunctionResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | The type of this function |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**currentVersionNumber** | **kotlin.Long** | The current version number of this function. Incremented every time a new version is deployed |
+**enabled** | **kotlin.Boolean** | True if this function is enabled |
+**name** | **kotlin.String** | The name of this function |
+**runtime** | [**ChatFunctionChatRuntimeProperties**](ChatFunctionChatRuntimeProperties.md) | |
+**description** | **kotlin.String** | Optional description of this function | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChatFunctionVersionResource.md b/examples/android-example/models/docs/ChatFunctionVersionResource.md
new file mode 100644
index 00000000..81ee980d
--- /dev/null
+++ b/examples/android-example/models/docs/ChatFunctionVersionResource.md
@@ -0,0 +1,13 @@
+
+# ChatFunctionVersionResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**handlerScript** | **kotlin.String** | JavaScript/TypeScript code that runs when this function is executed |
+**versionNumber** | **kotlin.Long** | The version number of this function version. Incremented from the previous version |
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChatRuntimeDependencyProperties.md b/examples/android-example/models/docs/ChatRuntimeDependencyProperties.md
new file mode 100644
index 00000000..83b9573f
--- /dev/null
+++ b/examples/android-example/models/docs/ChatRuntimeDependencyProperties.md
@@ -0,0 +1,12 @@
+
+# ChatRuntimeDependencyProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**defaultDependency** | **kotlin.Boolean** | True if this NPM package is automatically installed by ChatKitty and available by default in your chat functions |
+**name** | **kotlin.String** | The name of the dependency NPM package |
+**version** | **kotlin.String** | The version of the NPM package |
+
+
+
diff --git a/examples/android-example/models/docs/ChatRuntimeProperties.md b/examples/android-example/models/docs/ChatRuntimeProperties.md
new file mode 100644
index 00000000..1bd2f83f
--- /dev/null
+++ b/examples/android-example/models/docs/ChatRuntimeProperties.md
@@ -0,0 +1,22 @@
+
+# ChatRuntimeProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this runtime. Always NODEJS |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**dependencies** | [**kotlin.collections.List<ChatRuntimeDependencyProperties>**](ChatRuntimeDependencyProperties.md) | The NPM dependencies version of this runtime |
+**environmentVariables** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Environment variable set for this runtime. Accessible in the initialization script and chat functions associated with this runtime |
+**version** | **kotlin.String** | The semantic version of this runtime |
+**initializationScript** | [**ChatRuntimeScriptProperties**](ChatRuntimeScriptProperties.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | NODEJS
+
+
+
diff --git a/examples/android-example/models/docs/ChatRuntimeResource.md b/examples/android-example/models/docs/ChatRuntimeResource.md
new file mode 100644
index 00000000..cb407535
--- /dev/null
+++ b/examples/android-example/models/docs/ChatRuntimeResource.md
@@ -0,0 +1,23 @@
+
+# ChatRuntimeResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this runtime. Always NODEJS |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**dependencies** | [**kotlin.collections.List<ChatRuntimeDependencyProperties>**](ChatRuntimeDependencyProperties.md) | The NPM dependencies version of this runtime |
+**environmentVariables** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Environment variable set for this runtime. Accessible in the initialization script and chat functions associated with this runtime |
+**version** | **kotlin.String** | The semantic version of this runtime |
+**initializationScript** | [**ChatRuntimeScriptProperties**](ChatRuntimeScriptProperties.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | NODEJS
+
+
+
diff --git a/examples/android-example/models/docs/ChatRuntimeScriptProperties.md b/examples/android-example/models/docs/ChatRuntimeScriptProperties.md
new file mode 100644
index 00000000..0258eba6
--- /dev/null
+++ b/examples/android-example/models/docs/ChatRuntimeScriptProperties.md
@@ -0,0 +1,10 @@
+
+# ChatRuntimeScriptProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**script** | **kotlin.String** | The JavaScript/TypeScript source of this script |
+
+
+
diff --git a/examples/android-example/models/docs/ChatSessionResource.md b/examples/android-example/models/docs/ChatSessionResource.md
new file mode 100644
index 00000000..9753d187
--- /dev/null
+++ b/examples/android-example/models/docs/ChatSessionResource.md
@@ -0,0 +1,22 @@
+
+# ChatSessionResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | Time this session was created |
+**session** | [**ChatUserSessionProperties**](ChatUserSessionProperties.md) | |
+**state** | [**inline**](#State) | State of this session. ACTIVE or ENDED |
+**endTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | Time this session ended. Present if state is ENDED | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: state
+Name | Value
+---- | -----
+state | ACTIVE, ENDED
+
+
+
diff --git a/examples/android-example/models/docs/ChatSessionsApi.md b/examples/android-example/models/docs/ChatSessionsApi.md
new file mode 100644
index 00000000..e2d3fab1
--- /dev/null
+++ b/examples/android-example/models/docs/ChatSessionsApi.md
@@ -0,0 +1,64 @@
+# ChatSessionsApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**listChatSessions**](ChatSessionsApi.md#listChatSessions) | **GET** /v1/chat-sessions | List chat sessions
+
+
+
+# **listChatSessions**
+> PagedModelChatSessionResource listChatSessions(page, size, sort, state)
+
+List chat sessions
+
+Returns a page of chat sessions belonging to this application
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ChatSessionsApi()
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+val state : kotlin.String = state_example // kotlin.String | Filters by state
+try {
+ val result : PagedModelChatSessionResource = apiInstance.listChatSessions(page, size, sort, state)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ChatSessionsApi#listChatSessions")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ChatSessionsApi#listChatSessions")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+ **state** | **kotlin.String**| Filters by state | [optional] [enum: ACTIVE, ENDED]
+
+### Return type
+
+[**PagedModelChatSessionResource**](PagedModelChatSessionResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/ChatUserIdReference.md b/examples/android-example/models/docs/ChatUserIdReference.md
new file mode 100644
index 00000000..0e6c00b4
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserIdReference.md
@@ -0,0 +1,10 @@
+
+# ChatUserIdReference
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** | User ID associated with this user |
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserImport.md b/examples/android-example/models/docs/ChatUserImport.md
new file mode 100644
index 00000000..db7282b1
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserImport.md
@@ -0,0 +1,15 @@
+
+# ChatUserImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**displayName** | **kotlin.String** | Human readable name of this user. Shown to other users |
+**guest** | **kotlin.Boolean** | True if this user was created by a guest user session |
+**name** | **kotlin.String** | The unique name used to identify this user across ChatKitty. Also known as username |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this user |
+**displayPicture** | [**FileImport**](FileImport.md) | | [optional]
+**idempotencyKey** | **kotlin.String** | Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserMentionedChannelNotificationData.md b/examples/android-example/models/docs/ChatUserMentionedChannelNotificationData.md
new file mode 100644
index 00000000..241b37ff
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserMentionedChannelNotificationData.md
@@ -0,0 +1,13 @@
+
+# ChatUserMentionedChannelNotificationData
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**channelId** | **kotlin.Long** | The ID of the channel the mentioning message was sent. Deprecated: Use the channel property of this notification |
+**mentionedChannel** | [**ChannelResource**](ChannelResource.md) | |
+**message** | [**TextMessageResource**](TextMessageResource.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserMentionedChatUserNotificationData.md b/examples/android-example/models/docs/ChatUserMentionedChatUserNotificationData.md
new file mode 100644
index 00000000..f120f744
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserMentionedChatUserNotificationData.md
@@ -0,0 +1,13 @@
+
+# ChatUserMentionedChatUserNotificationData
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**channelId** | **kotlin.Long** | The ID of the channel the mentioning message was sent. Deprecated: Use the channel property of this notification |
+**mentionedUser** | [**ChatUserResource**](ChatUserResource.md) | |
+**message** | [**TextMessageResource**](TextMessageResource.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserMessageMentionProperties.md b/examples/android-example/models/docs/ChatUserMessageMentionProperties.md
new file mode 100644
index 00000000..3a45620f
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserMessageMentionProperties.md
@@ -0,0 +1,10 @@
+
+# ChatUserMessageMentionProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserMessageResource.md b/examples/android-example/models/docs/ChatUserMessageResource.md
new file mode 100644
index 00000000..136cdfa9
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserMessageResource.md
@@ -0,0 +1,32 @@
+
+# ChatUserMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this message |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**channelId** | **kotlin.Long** | The ID of the channel this message belongs to |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was created |
+**nestedLevel** | **kotlin.Int** | The nested thread level of this message |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message |
+**body** | **kotlin.String** | The text body of this message |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+**file** | [**FileProperties**](FileProperties.md) | |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**lastEditedTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was last edited | [optional]
+**reactions** | [**kotlin.collections.List<MessageReactionsSummaryProperties>**](MessageReactionsSummaryProperties.md) | Reactions to this message | [optional]
+**repliesCount** | **kotlin.Long** | The number of replies to this message | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+**links** | [**kotlin.collections.List<MessageLinkProperties>**](MessageLinkProperties.md) | Link previews in this message | [optional]
+**mentions** | [**kotlin.collections.List<MessageMentionProperties>**](MessageMentionProperties.md) | Mentions in this message | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | TEXT, FILE, SYSTEM_TEXT, SYSTEM_FILE
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserPresenceProperties.md b/examples/android-example/models/docs/ChatUserPresenceProperties.md
new file mode 100644
index 00000000..8e381bd4
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserPresenceProperties.md
@@ -0,0 +1,11 @@
+
+# ChatUserPresenceProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**online** | **kotlin.Boolean** | True if this user has an active user session |
+**status** | **kotlin.String** | The availability status of this user |
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserPresencePropertiesPatch.md b/examples/android-example/models/docs/ChatUserPresencePropertiesPatch.md
new file mode 100644
index 00000000..e0c9b349
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserPresencePropertiesPatch.md
@@ -0,0 +1,10 @@
+
+# ChatUserPresencePropertiesPatch
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**status** | **kotlin.String** | Updates the availability status of this user | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserProperties.md b/examples/android-example/models/docs/ChatUserProperties.md
new file mode 100644
index 00000000..f61b4f56
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserProperties.md
@@ -0,0 +1,32 @@
+
+# ChatUserProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | Type of user |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**displayName** | **kotlin.String** | Human readable name of this user. Shown to other users |
+**displayPictureUrl** | **kotlin.String** | URL for this user's display picture |
+**isGuest** | **kotlin.Boolean** | True if this user was created by a guest user session |
+**name** | **kotlin.String** | The unique name used to identify this user across ChatKitty. Also known as username |
+**presence** | [**ChatUserPresenceProperties**](ChatUserPresenceProperties.md) | |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this user |
+**callStatus** | [**inline**](#CallStatus) | Call presence status of this user | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | PERSON, BOT
+
+
+
+## Enum: callStatus
+Name | Value
+---- | -----
+callStatus | AVAILABLE, IN_CALL
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserPropertiesPatch.md b/examples/android-example/models/docs/ChatUserPropertiesPatch.md
new file mode 100644
index 00000000..1fca9ed7
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserPropertiesPatch.md
@@ -0,0 +1,13 @@
+
+# ChatUserPropertiesPatch
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**displayName** | **kotlin.String** | Updates human readable name of this user | [optional]
+**isGuest** | **kotlin.Boolean** | If true, changes this user to a guest user. If false requires this user be authenticated | [optional]
+**presence** | [**ChatUserPresencePropertiesPatch**](ChatUserPresencePropertiesPatch.md) | | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Updates custom data associated with this user | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserRepliedToChatUserMessageNotificationData.md b/examples/android-example/models/docs/ChatUserRepliedToChatUserMessageNotificationData.md
new file mode 100644
index 00000000..53d50d48
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserRepliedToChatUserMessageNotificationData.md
@@ -0,0 +1,13 @@
+
+# ChatUserRepliedToChatUserMessageNotificationData
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**channelId** | **kotlin.Long** | The ID of channel the reply message was sent. Deprecated: Use the channel property of this notification |
+**message** | [**MessageResource**](MessageResource.md) | |
+**parent** | [**MessageResource**](MessageResource.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserResource.md b/examples/android-example/models/docs/ChatUserResource.md
new file mode 100644
index 00000000..bd67f72e
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserResource.md
@@ -0,0 +1,33 @@
+
+# ChatUserResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | Type of user |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**displayName** | **kotlin.String** | Human readable name of this user. Shown to other users |
+**displayPictureUrl** | **kotlin.String** | URL for this user's display picture |
+**isGuest** | **kotlin.Boolean** | True if this user was created by a guest user session |
+**name** | **kotlin.String** | The unique name used to identify this user across ChatKitty. Also known as username |
+**presence** | [**ChatUserPresenceProperties**](ChatUserPresenceProperties.md) | |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this user |
+**callStatus** | [**inline**](#CallStatus) | Call presence status of this user | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | PERSON, BOT
+
+
+
+## Enum: callStatus
+Name | Value
+---- | -----
+callStatus | AVAILABLE, IN_CALL
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserSentChatUserMessageNotificationData.md b/examples/android-example/models/docs/ChatUserSentChatUserMessageNotificationData.md
new file mode 100644
index 00000000..1baab752
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserSentChatUserMessageNotificationData.md
@@ -0,0 +1,12 @@
+
+# ChatUserSentChatUserMessageNotificationData
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**channelId** | **kotlin.Long** | The ID channel the message was sent. Deprecated: Use the channel property of this notification |
+**message** | [**ChatUserMessageResource**](ChatUserMessageResource.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserSessionProperties.md b/examples/android-example/models/docs/ChatUserSessionProperties.md
new file mode 100644
index 00000000..a52ff6dc
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserSessionProperties.md
@@ -0,0 +1,22 @@
+
+# ChatUserSessionProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | Time this session was created |
+**state** | [**inline**](#State) | State of this session. ACTIVE or ENDED |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+**endTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | Time this session ended. Present if state is ENDED | [optional]
+**userAgent** | **kotlin.String** | User agent used to start this session | [optional]
+
+
+
+## Enum: state
+Name | Value
+---- | -----
+state | ACTIVE, ENDED
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserSessionResource.md b/examples/android-example/models/docs/ChatUserSessionResource.md
new file mode 100644
index 00000000..6bc1a030
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserSessionResource.md
@@ -0,0 +1,23 @@
+
+# ChatUserSessionResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | Time this session was created |
+**state** | [**inline**](#State) | State of this session. ACTIVE or ENDED |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+**endTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | Time this session ended. Present if state is ENDED | [optional]
+**userAgent** | **kotlin.String** | User agent used to start this session | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: state
+Name | Value
+---- | -----
+state | ACTIVE, ENDED
+
+
+
diff --git a/examples/android-example/models/docs/ChatUserUsernameReference.md b/examples/android-example/models/docs/ChatUserUsernameReference.md
new file mode 100644
index 00000000..66121d8e
--- /dev/null
+++ b/examples/android-example/models/docs/ChatUserUsernameReference.md
@@ -0,0 +1,10 @@
+
+# ChatUserUsernameReference
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**username** | **kotlin.String** | Username associated with this user |
+
+
+
diff --git a/examples/android-example/models/docs/CreateChannelGenericEventResource.md b/examples/android-example/models/docs/CreateChannelGenericEventResource.md
new file mode 100644
index 00000000..11d9b2c4
--- /dev/null
+++ b/examples/android-example/models/docs/CreateChannelGenericEventResource.md
@@ -0,0 +1,11 @@
+
+# CreateChannelGenericEventResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | Custom type of this event |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this event |
+
+
+
diff --git a/examples/android-example/models/docs/CreateChannelInviteResource.md b/examples/android-example/models/docs/CreateChannelInviteResource.md
new file mode 100644
index 00000000..3ca625ac
--- /dev/null
+++ b/examples/android-example/models/docs/CreateChannelInviteResource.md
@@ -0,0 +1,10 @@
+
+# CreateChannelInviteResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**user** | [**AddChannelMemberRequest**](AddChannelMemberRequest.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/CreateChannelRequest.md b/examples/android-example/models/docs/CreateChannelRequest.md
new file mode 100644
index 00000000..98842165
--- /dev/null
+++ b/examples/android-example/models/docs/CreateChannelRequest.md
@@ -0,0 +1,15 @@
+
+# CreateChannelRequest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**creator** | [**AddChannelMemberRequest**](AddChannelMemberRequest.md) | | [optional]
+**members** | [**kotlin.collections.Set<AddChannelMemberRequest>**](AddChannelMemberRequest.md) | List of user references of members of this channel | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel | [optional]
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel. If absent defaults to a random UUID | [optional]
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users. If absent defaults to the channel name | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CreateChannelResource.md b/examples/android-example/models/docs/CreateChannelResource.md
new file mode 100644
index 00000000..16a1cb9c
--- /dev/null
+++ b/examples/android-example/models/docs/CreateChannelResource.md
@@ -0,0 +1,13 @@
+
+# CreateChannelResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**creator** | [**AddChannelMemberRequest**](AddChannelMemberRequest.md) | | [optional]
+**members** | [**kotlin.collections.Set<AddChannelMemberRequest>**](AddChannelMemberRequest.md) | List of user references of members of this channel | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CreateChatFunctionResource.md b/examples/android-example/models/docs/CreateChatFunctionResource.md
new file mode 100644
index 00000000..31a5b663
--- /dev/null
+++ b/examples/android-example/models/docs/CreateChatFunctionResource.md
@@ -0,0 +1,13 @@
+
+# CreateChatFunctionResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**initializeAsynchronously** | **kotlin.Boolean** | |
+**name** | **kotlin.String** | |
+**description** | **kotlin.String** | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CreateChatFunctionVersionResource.md b/examples/android-example/models/docs/CreateChatFunctionVersionResource.md
new file mode 100644
index 00000000..4428f2ba
--- /dev/null
+++ b/examples/android-example/models/docs/CreateChatFunctionVersionResource.md
@@ -0,0 +1,10 @@
+
+# CreateChatFunctionVersionResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**handlerScript** | **kotlin.String** | JavaScript/TypeScript code that runs when this function is executed |
+
+
+
diff --git a/examples/android-example/models/docs/CreateDelegatedReplyThreadKeystrokesResource.md b/examples/android-example/models/docs/CreateDelegatedReplyThreadKeystrokesResource.md
new file mode 100644
index 00000000..9d0772ba
--- /dev/null
+++ b/examples/android-example/models/docs/CreateDelegatedReplyThreadKeystrokesResource.md
@@ -0,0 +1,11 @@
+
+# CreateDelegatedReplyThreadKeystrokesResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**propertyKeys** | **kotlin.String** | |
+**user** | [**AddChannelMemberRequest**](AddChannelMemberRequest.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/CreateDirectChannelResource.md b/examples/android-example/models/docs/CreateDirectChannelResource.md
new file mode 100644
index 00000000..407a55ab
--- /dev/null
+++ b/examples/android-example/models/docs/CreateDirectChannelResource.md
@@ -0,0 +1,9 @@
+
+# CreateDirectChannelResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+
+
+
diff --git a/examples/android-example/models/docs/CreateExternalFileProperties.md b/examples/android-example/models/docs/CreateExternalFileProperties.md
new file mode 100644
index 00000000..161a58b7
--- /dev/null
+++ b/examples/android-example/models/docs/CreateExternalFileProperties.md
@@ -0,0 +1,13 @@
+
+# CreateExternalFileProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**contentType** | **kotlin.String** | File MIME content type |
+**name** | **kotlin.String** | File name |
+**propertySize** | **kotlin.Long** | File size in bytes |
+**url** | **kotlin.String** | External file URL |
+
+
+
diff --git a/examples/android-example/models/docs/CreateFileMessageResource.md b/examples/android-example/models/docs/CreateFileMessageResource.md
new file mode 100644
index 00000000..c48832f1
--- /dev/null
+++ b/examples/android-example/models/docs/CreateFileMessageResource.md
@@ -0,0 +1,10 @@
+
+# CreateFileMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**file** | [**CreateExternalFileProperties**](CreateExternalFileProperties.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/CreateMessageResource.md b/examples/android-example/models/docs/CreateMessageResource.md
new file mode 100644
index 00000000..a763ff61
--- /dev/null
+++ b/examples/android-example/models/docs/CreateMessageResource.md
@@ -0,0 +1,13 @@
+
+# CreateMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message | [optional]
+**user** | [**AddChannelMemberRequest**](AddChannelMemberRequest.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CreatePersonChatUserResource.md b/examples/android-example/models/docs/CreatePersonChatUserResource.md
new file mode 100644
index 00000000..c1aaf9ee
--- /dev/null
+++ b/examples/android-example/models/docs/CreatePersonChatUserResource.md
@@ -0,0 +1,13 @@
+
+# CreatePersonChatUserResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**displayName** | **kotlin.String** | Human readable name of this user. Shown to other users |
+**isGuest** | **kotlin.Boolean** | True if this user was created by a guest user session |
+**name** | **kotlin.String** | The unique name used to identify this user across ChatKitty. Also known as username |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this user | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CreatePrivateChannelResource.md b/examples/android-example/models/docs/CreatePrivateChannelResource.md
new file mode 100644
index 00000000..5c710ef0
--- /dev/null
+++ b/examples/android-example/models/docs/CreatePrivateChannelResource.md
@@ -0,0 +1,11 @@
+
+# CreatePrivateChannelResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel. If absent defaults to a random UUID | [optional]
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users. If absent defaults to the channel name | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CreatePublicChannelResource.md b/examples/android-example/models/docs/CreatePublicChannelResource.md
new file mode 100644
index 00000000..1a7f65fb
--- /dev/null
+++ b/examples/android-example/models/docs/CreatePublicChannelResource.md
@@ -0,0 +1,11 @@
+
+# CreatePublicChannelResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel. If absent defaults to a random UUID | [optional]
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users. If absent defaults to the channel name | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CreateTextMessageResource.md b/examples/android-example/models/docs/CreateTextMessageResource.md
new file mode 100644
index 00000000..439adb53
--- /dev/null
+++ b/examples/android-example/models/docs/CreateTextMessageResource.md
@@ -0,0 +1,10 @@
+
+# CreateTextMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**body** | **kotlin.String** | The text body of this message |
+
+
+
diff --git a/examples/android-example/models/docs/CursorPageMetadata.md b/examples/android-example/models/docs/CursorPageMetadata.md
new file mode 100644
index 00000000..c40fb9c9
--- /dev/null
+++ b/examples/android-example/models/docs/CursorPageMetadata.md
@@ -0,0 +1,12 @@
+
+# CursorPageMetadata
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**propertySize** | **kotlin.Long** | |
+**next** | **kotlin.String** | | [optional]
+**start** | **kotlin.String** | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CursorPagedModelMessageResource.md b/examples/android-example/models/docs/CursorPagedModelMessageResource.md
new file mode 100644
index 00000000..e2245ae4
--- /dev/null
+++ b/examples/android-example/models/docs/CursorPagedModelMessageResource.md
@@ -0,0 +1,12 @@
+
+# CursorPagedModelMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**page** | [**CursorPageMetadata**](CursorPageMetadata.md) | |
+**embedded** | [**CursorPagedModelMessageResourceEmbedded**](CursorPagedModelMessageResourceEmbedded.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CursorPagedModelMessageResourceEmbedded.md b/examples/android-example/models/docs/CursorPagedModelMessageResourceEmbedded.md
new file mode 100644
index 00000000..1c73ce85
--- /dev/null
+++ b/examples/android-example/models/docs/CursorPagedModelMessageResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# CursorPagedModelMessageResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**messages** | [**kotlin.collections.List<MessageResource>**](MessageResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CursorPagedModelNotificationResource.md b/examples/android-example/models/docs/CursorPagedModelNotificationResource.md
new file mode 100644
index 00000000..18ec9a38
--- /dev/null
+++ b/examples/android-example/models/docs/CursorPagedModelNotificationResource.md
@@ -0,0 +1,12 @@
+
+# CursorPagedModelNotificationResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**page** | [**CursorPageMetadata**](CursorPageMetadata.md) | |
+**embedded** | [**CursorPagedModelNotificationResourceEmbedded**](CursorPagedModelNotificationResourceEmbedded.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/CursorPagedModelNotificationResourceEmbedded.md b/examples/android-example/models/docs/CursorPagedModelNotificationResourceEmbedded.md
new file mode 100644
index 00000000..46267c72
--- /dev/null
+++ b/examples/android-example/models/docs/CursorPagedModelNotificationResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# CursorPagedModelNotificationResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**notifications** | [**kotlin.collections.List<NotificationResource>**](NotificationResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/DirectChannelImport.md b/examples/android-example/models/docs/DirectChannelImport.md
new file mode 100644
index 00000000..f4c5a041
--- /dev/null
+++ b/examples/android-example/models/docs/DirectChannelImport.md
@@ -0,0 +1,9 @@
+
+# DirectChannelImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+
+
+
diff --git a/examples/android-example/models/docs/DirectChannelProperties.md b/examples/android-example/models/docs/DirectChannelProperties.md
new file mode 100644
index 00000000..ff534906
--- /dev/null
+++ b/examples/android-example/models/docs/DirectChannelProperties.md
@@ -0,0 +1,23 @@
+
+# DirectChannelProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this channel |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this channel was created |
+**members** | [**kotlin.collections.List<ChatUserProperties>**](ChatUserProperties.md) | The members of this channel. Present if this is a direct channel. For other channel types, use [**list channel messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel |
+**creator** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**lastReceivedMessage** | [**MessageProperties**](MessageProperties.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | DIRECT, PUBLIC, PRIVATE
+
+
+
diff --git a/examples/android-example/models/docs/DirectChannelResource.md b/examples/android-example/models/docs/DirectChannelResource.md
new file mode 100644
index 00000000..cb61849e
--- /dev/null
+++ b/examples/android-example/models/docs/DirectChannelResource.md
@@ -0,0 +1,24 @@
+
+# DirectChannelResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this channel |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this channel was created |
+**members** | [**kotlin.collections.List<ChatUserProperties>**](ChatUserProperties.md) | The members of this channel. Present if this is a direct channel. For other channel types, use [**list channel messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel |
+**creator** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**lastReceivedMessage** | [**MessageProperties**](MessageProperties.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | DIRECT, PUBLIC, PRIVATE
+
+
+
diff --git a/examples/android-example/models/docs/EmojiProperties.md b/examples/android-example/models/docs/EmojiProperties.md
new file mode 100644
index 00000000..5f5afe07
--- /dev/null
+++ b/examples/android-example/models/docs/EmojiProperties.md
@@ -0,0 +1,13 @@
+
+# EmojiProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**aliases** | **kotlin.collections.Set<kotlin.String>** | List of possible aliases for this emoji |
+**character** | **kotlin.String** | The unicode character of this emoji |
+**description** | **kotlin.String** | Description of this emoji |
+**tags** | **kotlin.collections.Set<kotlin.String>** | Tags used to describe this emoji |
+
+
+
diff --git a/examples/android-example/models/docs/FileChatUserMessageProperties.md b/examples/android-example/models/docs/FileChatUserMessageProperties.md
new file mode 100644
index 00000000..d80e4fb2
--- /dev/null
+++ b/examples/android-example/models/docs/FileChatUserMessageProperties.md
@@ -0,0 +1,11 @@
+
+# FileChatUserMessageProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**file** | [**FileProperties**](FileProperties.md) | |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/FileChatUserMessageResource.md b/examples/android-example/models/docs/FileChatUserMessageResource.md
new file mode 100644
index 00000000..f0daa20d
--- /dev/null
+++ b/examples/android-example/models/docs/FileChatUserMessageResource.md
@@ -0,0 +1,29 @@
+
+# FileChatUserMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this message |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**channelId** | **kotlin.Long** | The ID of the channel this message belongs to |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was created |
+**file** | [**FileProperties**](FileProperties.md) | |
+**nestedLevel** | **kotlin.Int** | The nested thread level of this message |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**lastEditedTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was last edited | [optional]
+**reactions** | [**kotlin.collections.List<MessageReactionsSummaryProperties>**](MessageReactionsSummaryProperties.md) | Reactions to this message | [optional]
+**repliesCount** | **kotlin.Long** | The number of replies to this message | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | TEXT, FILE, SYSTEM_TEXT, SYSTEM_FILE
+
+
+
diff --git a/examples/android-example/models/docs/FileImport.md b/examples/android-example/models/docs/FileImport.md
new file mode 100644
index 00000000..d2b07be8
--- /dev/null
+++ b/examples/android-example/models/docs/FileImport.md
@@ -0,0 +1,14 @@
+
+# FileImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**contentType** | **kotlin.String** | The mime type of this file |
+**name** | **kotlin.String** | The file name |
+**propertySize** | **kotlin.Long** | The size of this file in bytes |
+**url** | **kotlin.String** | The file URL |
+**idempotencyKey** | **kotlin.String** | Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/FileProperties.md b/examples/android-example/models/docs/FileProperties.md
new file mode 100644
index 00000000..cf25a983
--- /dev/null
+++ b/examples/android-example/models/docs/FileProperties.md
@@ -0,0 +1,21 @@
+
+# FileProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this file. Either external or hosted by ChatKitty |
+**contentType** | **kotlin.String** | The mime type of this file |
+**name** | **kotlin.String** | The file name |
+**propertySize** | **kotlin.Long** | The size of this file in bytes |
+**url** | **kotlin.String** | The file URL |
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | HOSTED, EXTERNAL
+
+
+
diff --git a/examples/android-example/models/docs/FileSystemMessageProperties.md b/examples/android-example/models/docs/FileSystemMessageProperties.md
new file mode 100644
index 00000000..382ccb28
--- /dev/null
+++ b/examples/android-example/models/docs/FileSystemMessageProperties.md
@@ -0,0 +1,10 @@
+
+# FileSystemMessageProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**file** | [**FileProperties**](FileProperties.md) | |
+
+
+
diff --git a/examples/android-example/models/docs/FileSystemMessageResource.md b/examples/android-example/models/docs/FileSystemMessageResource.md
new file mode 100644
index 00000000..a6e7ebee
--- /dev/null
+++ b/examples/android-example/models/docs/FileSystemMessageResource.md
@@ -0,0 +1,28 @@
+
+# FileSystemMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this message |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**channelId** | **kotlin.Long** | The ID of the channel this message belongs to |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was created |
+**file** | [**FileProperties**](FileProperties.md) | |
+**nestedLevel** | **kotlin.Int** | The nested thread level of this message |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**lastEditedTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was last edited | [optional]
+**reactions** | [**kotlin.collections.List<MessageReactionsSummaryProperties>**](MessageReactionsSummaryProperties.md) | Reactions to this message | [optional]
+**repliesCount** | **kotlin.Long** | The number of replies to this message | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | TEXT, FILE, SYSTEM_TEXT, SYSTEM_FILE
+
+
+
diff --git a/examples/android-example/models/docs/FunctionVersionsApi.md b/examples/android-example/models/docs/FunctionVersionsApi.md
new file mode 100644
index 00000000..667a5512
--- /dev/null
+++ b/examples/android-example/models/docs/FunctionVersionsApi.md
@@ -0,0 +1,58 @@
+# FunctionVersionsApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**retrieveFunctionVersion**](FunctionVersionsApi.md#retrieveFunctionVersion) | **GET** /v1/function-versions/{id} | Retrieve a chat function version
+
+
+
+# **retrieveFunctionVersion**
+> ChatFunctionVersionResource retrieveFunctionVersion(id)
+
+Retrieve a chat function version
+
+Returns a chat function version by ID
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = FunctionVersionsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Chat function version ID
+try {
+ val result : ChatFunctionVersionResource = apiInstance.retrieveFunctionVersion(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling FunctionVersionsApi#retrieveFunctionVersion")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling FunctionVersionsApi#retrieveFunctionVersion")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Chat function version ID |
+
+### Return type
+
+[**ChatFunctionVersionResource**](ChatFunctionVersionResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/FunctionsApi.md b/examples/android-example/models/docs/FunctionsApi.md
new file mode 100644
index 00000000..acee1a45
--- /dev/null
+++ b/examples/android-example/models/docs/FunctionsApi.md
@@ -0,0 +1,272 @@
+# FunctionsApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**createFunctionVersion**](FunctionsApi.md#createFunctionVersion) | **POST** /v1/functions/{id}/versions | Create a chat function version
+[**listFunctionInvocations**](FunctionsApi.md#listFunctionInvocations) | **GET** /v1/functions/{id}/invocations | List chat function invocations
+[**listFunctionVersions**](FunctionsApi.md#listFunctionVersions) | **GET** /v1/functions/{id}/versions | List chat function versions
+[**retrieveFunction**](FunctionsApi.md#retrieveFunction) | **GET** /v1/functions/{id} | Retrieve a chat function
+[**retrieveFunctionCurrentVersion**](FunctionsApi.md#retrieveFunctionCurrentVersion) | **GET** /v1/functions/{id}/current-version | Retrieve chat function current version
+
+
+
+# **createFunctionVersion**
+> ChatFunctionVersionResource createFunctionVersion(id, createChatFunctionVersionResource)
+
+Create a chat function version
+
+Creates a new version of this chat function
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = FunctionsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Chat function ID
+val createChatFunctionVersionResource : CreateChatFunctionVersionResource = // CreateChatFunctionVersionResource |
+try {
+ val result : ChatFunctionVersionResource = apiInstance.createFunctionVersion(id, createChatFunctionVersionResource)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling FunctionsApi#createFunctionVersion")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling FunctionsApi#createFunctionVersion")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Chat function ID |
+ **createChatFunctionVersionResource** | [**CreateChatFunctionVersionResource**](CreateChatFunctionVersionResource.md)| |
+
+### Return type
+
+[**ChatFunctionVersionResource**](ChatFunctionVersionResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listFunctionInvocations**
+> PagedModelChatFunctionInvocationResource listFunctionInvocations(id, page, size, sort)
+
+List chat function invocations
+
+Returns a page of invocations of this chat function. A log of previous runs of the function
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = FunctionsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Chat function ID
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+try {
+ val result : PagedModelChatFunctionInvocationResource = apiInstance.listFunctionInvocations(id, page, size, sort)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling FunctionsApi#listFunctionInvocations")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling FunctionsApi#listFunctionInvocations")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Chat function ID |
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+
+### Return type
+
+[**PagedModelChatFunctionInvocationResource**](PagedModelChatFunctionInvocationResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listFunctionVersions**
+> PagedModelChatFunctionVersionResource listFunctionVersions(id, page, size, sort)
+
+List chat function versions
+
+Returns a page of versions of this chat function
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = FunctionsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Chat function ID
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+try {
+ val result : PagedModelChatFunctionVersionResource = apiInstance.listFunctionVersions(id, page, size, sort)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling FunctionsApi#listFunctionVersions")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling FunctionsApi#listFunctionVersions")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Chat function ID |
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+
+### Return type
+
+[**PagedModelChatFunctionVersionResource**](PagedModelChatFunctionVersionResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **retrieveFunction**
+> ChatFunctionResource retrieveFunction(id)
+
+Retrieve a chat function
+
+Returns a chat function by ID
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = FunctionsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Chat function ID
+try {
+ val result : ChatFunctionResource = apiInstance.retrieveFunction(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling FunctionsApi#retrieveFunction")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling FunctionsApi#retrieveFunction")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Chat function ID |
+
+### Return type
+
+[**ChatFunctionResource**](ChatFunctionResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **retrieveFunctionCurrentVersion**
+> ChatFunctionVersionResource retrieveFunctionCurrentVersion(id)
+
+Retrieve chat function current version
+
+Returns the version of this chat function currently deployed
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = FunctionsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Chat function ID
+try {
+ val result : ChatFunctionVersionResource = apiInstance.retrieveFunctionCurrentVersion(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling FunctionsApi#retrieveFunctionCurrentVersion")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling FunctionsApi#retrieveFunctionCurrentVersion")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Chat function ID |
+
+### Return type
+
+[**ChatFunctionVersionResource**](ChatFunctionVersionResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/GroupChannelImport.md b/examples/android-example/models/docs/GroupChannelImport.md
new file mode 100644
index 00000000..03b0a2b2
--- /dev/null
+++ b/examples/android-example/models/docs/GroupChannelImport.md
@@ -0,0 +1,15 @@
+
+# GroupChannelImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**members** | **kotlin.collections.List<kotlin.String>** | List of usernames of members of this channel |
+**creator** | **kotlin.String** | Username of the user who created this channel | [optional]
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users. If absent defaults to the channel name | [optional]
+**idempotencyKey** | **kotlin.String** | Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended | [optional]
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel. If absent defaults to a random UUID | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ImportsApi.md b/examples/android-example/models/docs/ImportsApi.md
new file mode 100644
index 00000000..9bf5a1a1
--- /dev/null
+++ b/examples/android-example/models/docs/ImportsApi.md
@@ -0,0 +1,210 @@
+# ImportsApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**importChannelMembers**](ImportsApi.md#importChannelMembers) | **POST** /v1/imports/channels/{id}/members | Import channel members
+[**importChannels**](ImportsApi.md#importChannels) | **POST** /v1/imports/channels | Import channels
+[**importMessages**](ImportsApi.md#importMessages) | **POST** /v1/imports/messages | Import messages
+[**importUsers**](ImportsApi.md#importUsers) | **POST** /v1/imports/users | Import users
+
+
+
+# **importChannelMembers**
+> ApplicationJobResource importChannelMembers(id, file)
+
+Import channel members
+
+Batch imports channel members from a JSON array file
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ImportsApi()
+val id : kotlin.Long = 789 // kotlin.Long |
+val file : java.io.File = BINARY_DATA_HERE // java.io.File | JSON array file with user references to be added as members
+try {
+ val result : ApplicationJobResource = apiInstance.importChannelMembers(id, file)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ImportsApi#importChannelMembers")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ImportsApi#importChannelMembers")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| |
+ **file** | **java.io.File**| JSON array file with user references to be added as members |
+
+### Return type
+
+[**ApplicationJobResource**](ApplicationJobResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **importChannels**
+> ApplicationJobResource importChannels(file)
+
+Import channels
+
+Batch imports channels from a JSON array file
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ImportsApi()
+val file : java.io.File = BINARY_DATA_HERE // java.io.File | JSON array file with channels
+try {
+ val result : ApplicationJobResource = apiInstance.importChannels(file)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ImportsApi#importChannels")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ImportsApi#importChannels")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **file** | **java.io.File**| JSON array file with channels |
+
+### Return type
+
+[**ApplicationJobResource**](ApplicationJobResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **importMessages**
+> ApplicationJobResource importMessages(file)
+
+Import messages
+
+Batch imports messages from a JSON array file
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ImportsApi()
+val file : java.io.File = BINARY_DATA_HERE // java.io.File | JSON array file with messages
+try {
+ val result : ApplicationJobResource = apiInstance.importMessages(file)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ImportsApi#importMessages")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ImportsApi#importMessages")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **file** | **java.io.File**| JSON array file with messages |
+
+### Return type
+
+[**ApplicationJobResource**](ApplicationJobResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **importUsers**
+> ApplicationJobResource importUsers(file)
+
+Import users
+
+Batch imports users from a JSON array file
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ImportsApi()
+val file : java.io.File = BINARY_DATA_HERE // java.io.File | JSON array file with users
+try {
+ val result : ApplicationJobResource = apiInstance.importUsers(file)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ImportsApi#importUsers")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ImportsApi#importUsers")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **file** | **java.io.File**| JSON array file with users |
+
+### Return type
+
+[**ApplicationJobResource**](ApplicationJobResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/JobsApi.md b/examples/android-example/models/docs/JobsApi.md
new file mode 100644
index 00000000..4db5e174
--- /dev/null
+++ b/examples/android-example/models/docs/JobsApi.md
@@ -0,0 +1,114 @@
+# JobsApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**listJobs**](JobsApi.md#listJobs) | **GET** /v1/jobs | List jobs
+[**retrieveJob**](JobsApi.md#retrieveJob) | **GET** /v1/jobs/{id} | Retrieve a job
+
+
+
+# **listJobs**
+> PagedModelApplicationJobResource listJobs(page, size, sort, running)
+
+List jobs
+
+Returns a page of jobs created for this application
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = JobsApi()
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+val running : kotlin.Boolean = true // kotlin.Boolean | Filters for jobs currently running
+try {
+ val result : PagedModelApplicationJobResource = apiInstance.listJobs(page, size, sort, running)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling JobsApi#listJobs")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling JobsApi#listJobs")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+ **running** | **kotlin.Boolean**| Filters for jobs currently running | [optional]
+
+### Return type
+
+[**PagedModelApplicationJobResource**](PagedModelApplicationJobResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **retrieveJob**
+> ApplicationJobResource retrieveJob(id)
+
+Retrieve a job
+
+Returns a job by ID
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = JobsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Job ID
+try {
+ val result : ApplicationJobResource = apiInstance.retrieveJob(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling JobsApi#retrieveJob")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling JobsApi#retrieveJob")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Job ID |
+
+### Return type
+
+[**ApplicationJobResource**](ApplicationJobResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/Link.md b/examples/android-example/models/docs/Link.md
new file mode 100644
index 00000000..e4406b77
--- /dev/null
+++ b/examples/android-example/models/docs/Link.md
@@ -0,0 +1,17 @@
+
+# Link
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**href** | **kotlin.String** | | [optional]
+**hreflang** | **kotlin.String** | | [optional]
+**title** | **kotlin.String** | | [optional]
+**type** | **kotlin.String** | | [optional]
+**deprecation** | **kotlin.String** | | [optional]
+**profile** | **kotlin.String** | | [optional]
+**name** | **kotlin.String** | | [optional]
+**templated** | **kotlin.Boolean** | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/MessageImport.md b/examples/android-example/models/docs/MessageImport.md
new file mode 100644
index 00000000..05e34040
--- /dev/null
+++ b/examples/android-example/models/docs/MessageImport.md
@@ -0,0 +1,14 @@
+
+# MessageImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**channelId** | **kotlin.Long** | ID of the channel this message belongs to |
+**groupTag** | **kotlin.String** | Tag identifying the message group this message belongs to | [optional]
+**idempotencyKey** | **kotlin.String** | Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Map of custom data attached to this message | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/MessageLinkPreviewImageProperties.md b/examples/android-example/models/docs/MessageLinkPreviewImageProperties.md
new file mode 100644
index 00000000..bdbb4b9c
--- /dev/null
+++ b/examples/android-example/models/docs/MessageLinkPreviewImageProperties.md
@@ -0,0 +1,10 @@
+
+# MessageLinkPreviewImageProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**source** | **kotlin.String** | The url source of this image |
+
+
+
diff --git a/examples/android-example/models/docs/MessageLinkPreviewProperties.md b/examples/android-example/models/docs/MessageLinkPreviewProperties.md
new file mode 100644
index 00000000..0b56badb
--- /dev/null
+++ b/examples/android-example/models/docs/MessageLinkPreviewProperties.md
@@ -0,0 +1,14 @@
+
+# MessageLinkPreviewProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**image** | [**MessageLinkPreviewImageProperties**](MessageLinkPreviewImageProperties.md) | |
+**title** | **kotlin.String** | The title of this link |
+**url** | **kotlin.String** | The URL of the link being previewed |
+**description** | **kotlin.String** | Description of this link preview | [optional]
+**siteName** | **kotlin.String** | The name of the site linked | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/MessageLinkProperties.md b/examples/android-example/models/docs/MessageLinkProperties.md
new file mode 100644
index 00000000..b6b3d265
--- /dev/null
+++ b/examples/android-example/models/docs/MessageLinkProperties.md
@@ -0,0 +1,13 @@
+
+# MessageLinkProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**endPosition** | **kotlin.Int** | The ending index of this link within the message |
+**source** | **kotlin.String** | The href of the URL this message link represents |
+**startPosition** | **kotlin.Int** | The starting index of this link within the message |
+**preview** | [**MessageLinkPreviewProperties**](MessageLinkPreviewProperties.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/MessageMentionChannelProperties.md b/examples/android-example/models/docs/MessageMentionChannelProperties.md
new file mode 100644
index 00000000..df3fec3b
--- /dev/null
+++ b/examples/android-example/models/docs/MessageMentionChannelProperties.md
@@ -0,0 +1,23 @@
+
+# MessageMentionChannelProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this channel |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this channel was created |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel |
+**creator** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users. Present if this is a group channel | [optional]
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel. Present if this is a group channel | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | DIRECT, PUBLIC, PRIVATE
+
+
+
diff --git a/examples/android-example/models/docs/MessageMentionProperties.md b/examples/android-example/models/docs/MessageMentionProperties.md
new file mode 100644
index 00000000..aaebc568
--- /dev/null
+++ b/examples/android-example/models/docs/MessageMentionProperties.md
@@ -0,0 +1,20 @@
+
+# MessageMentionProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this message mention |
+**endPosition** | **kotlin.Int** | The ending position of this mention reference inside its message |
+**startPosition** | **kotlin.Int** | The starting position of this mention reference inside its message |
+**tag** | **kotlin.String** | The literal text referencing the mentioned entity inside the message |
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | CHANNEL, USER
+
+
+
diff --git a/examples/android-example/models/docs/MessageProperties.md b/examples/android-example/models/docs/MessageProperties.md
new file mode 100644
index 00000000..1f49731e
--- /dev/null
+++ b/examples/android-example/models/docs/MessageProperties.md
@@ -0,0 +1,26 @@
+
+# MessageProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this message |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**channelId** | **kotlin.Long** | The ID of the channel this message belongs to |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was created |
+**nestedLevel** | **kotlin.Int** | The nested thread level of this message |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**lastEditedTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was last edited | [optional]
+**reactions** | [**kotlin.collections.List<MessageReactionsSummaryProperties>**](MessageReactionsSummaryProperties.md) | Reactions to this message | [optional]
+**repliesCount** | **kotlin.Long** | The number of replies to this message | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | TEXT, FILE, SYSTEM_TEXT, SYSTEM_FILE
+
+
+
diff --git a/examples/android-example/models/docs/MessagePropertiesPatch.md b/examples/android-example/models/docs/MessagePropertiesPatch.md
new file mode 100644
index 00000000..e702d66e
--- /dev/null
+++ b/examples/android-example/models/docs/MessagePropertiesPatch.md
@@ -0,0 +1,11 @@
+
+# MessagePropertiesPatch
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**body** | **kotlin.String** | Updates the text body of this message | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Updates custom data associated with this message | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/MessageReactionsSummaryProperties.md b/examples/android-example/models/docs/MessageReactionsSummaryProperties.md
new file mode 100644
index 00000000..894ffc71
--- /dev/null
+++ b/examples/android-example/models/docs/MessageReactionsSummaryProperties.md
@@ -0,0 +1,12 @@
+
+# MessageReactionsSummaryProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**count** | **kotlin.Long** | The number of users that reacted with this emoji |
+**emoji** | [**EmojiProperties**](EmojiProperties.md) | |
+**users** | [**kotlin.collections.List<ChatUserProperties>**](ChatUserProperties.md) | The users that reacted with this emoji |
+
+
+
diff --git a/examples/android-example/models/docs/MessageReadReceiptResource.md b/examples/android-example/models/docs/MessageReadReceiptResource.md
new file mode 100644
index 00000000..74a39e98
--- /dev/null
+++ b/examples/android-example/models/docs/MessageReadReceiptResource.md
@@ -0,0 +1,12 @@
+
+# MessageReadReceiptResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | Time the user read this message |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/MessageResource.md b/examples/android-example/models/docs/MessageResource.md
new file mode 100644
index 00000000..a7ee51df
--- /dev/null
+++ b/examples/android-example/models/docs/MessageResource.md
@@ -0,0 +1,32 @@
+
+# MessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this message |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**channelId** | **kotlin.Long** | The ID of the channel this message belongs to |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was created |
+**nestedLevel** | **kotlin.Int** | The nested thread level of this message |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message |
+**body** | **kotlin.String** | The text body of this message |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+**file** | [**FileProperties**](FileProperties.md) | |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**lastEditedTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was last edited | [optional]
+**reactions** | [**kotlin.collections.List<MessageReactionsSummaryProperties>**](MessageReactionsSummaryProperties.md) | Reactions to this message | [optional]
+**repliesCount** | **kotlin.Long** | The number of replies to this message | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+**links** | [**kotlin.collections.List<MessageLinkProperties>**](MessageLinkProperties.md) | Link previews in this message | [optional]
+**mentions** | [**kotlin.collections.List<MessageMentionProperties>**](MessageMentionProperties.md) | Mentions in this message | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | TEXT, FILE, SYSTEM_TEXT, SYSTEM_FILE
+
+
+
diff --git a/examples/android-example/models/docs/MessagesApi.md b/examples/android-example/models/docs/MessagesApi.md
new file mode 100644
index 00000000..26b525db
--- /dev/null
+++ b/examples/android-example/models/docs/MessagesApi.md
@@ -0,0 +1,322 @@
+# MessagesApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteMessage**](MessagesApi.md#deleteMessage) | **DELETE** /v1/messages/{id} | Delete a message
+[**deleteMessages**](MessagesApi.md#deleteMessages) | **DELETE** /v1/messages | Delete messages
+[**listMessageReadReceipts**](MessagesApi.md#listMessageReadReceipts) | **GET** /v1/messages/{id}/read-receipts | List message read receipts
+[**listMessages**](MessagesApi.md#listMessages) | **GET** /v1/messages | List messages
+[**retrieveMessage**](MessagesApi.md#retrieveMessage) | **GET** /v1/messages/{id} | Retrieve a message
+[**updateMessage**](MessagesApi.md#updateMessage) | **PATCH** /v1/messages/{id} | Update a message
+
+
+
+# **deleteMessage**
+> ReplyThreadResource deleteMessage(id)
+
+Delete a message
+
+Deletes a message by ID
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = MessagesApi()
+val id : kotlin.Long = 789 // kotlin.Long | Message ID
+try {
+ val result : ReplyThreadResource = apiInstance.deleteMessage(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling MessagesApi#deleteMessage")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling MessagesApi#deleteMessage")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Message ID |
+
+### Return type
+
+[**ReplyThreadResource**](ReplyThreadResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **deleteMessages**
+> ApplicationResource deleteMessages()
+
+Delete messages
+
+Deletes all messages belonging to this application
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = MessagesApi()
+try {
+ val result : ApplicationResource = apiInstance.deleteMessages()
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling MessagesApi#deleteMessages")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling MessagesApi#deleteMessages")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**ApplicationResource**](ApplicationResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listMessageReadReceipts**
+> PagedModelMessageReadReceiptResource listMessageReadReceipts(id, page, size, sort)
+
+List message read receipts
+
+Returns a page of read receipts for this message
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = MessagesApi()
+val id : kotlin.Long = 789 // kotlin.Long |
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+try {
+ val result : PagedModelMessageReadReceiptResource = apiInstance.listMessageReadReceipts(id, page, size, sort)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling MessagesApi#listMessageReadReceipts")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling MessagesApi#listMessageReadReceipts")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| |
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+
+### Return type
+
+[**PagedModelMessageReadReceiptResource**](PagedModelMessageReadReceiptResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listMessages**
+> CursorPagedModelMessageResource listMessages(size, start, next, relation, username, query)
+
+List messages
+
+Returns a page of messages belonging to this application
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = MessagesApi()
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val start : kotlin.Long = 789 // kotlin.Long | Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages
+val next : kotlin.Long = 789 // kotlin.Long | Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages
+val relation : kotlin.String = relation_example // kotlin.String | Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages
+val username : kotlin.String = username_example // kotlin.String | Filters messages by a sender's username
+val query : kotlin.String = query_example // kotlin.String | Filters text messages by text contained in the message body
+try {
+ val result : CursorPagedModelMessageResource = apiInstance.listMessages(size, start, next, relation, username, query)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling MessagesApi#listMessages")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling MessagesApi#listMessages")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional]
+ **start** | **kotlin.Long**| Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages | [optional]
+ **next** | **kotlin.Long**| Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages | [optional]
+ **relation** | **kotlin.String**| Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages | [optional] [enum: SELF, PREVIOUS, NEXT]
+ **username** | **kotlin.String**| Filters messages by a sender's username | [optional]
+ **query** | **kotlin.String**| Filters text messages by text contained in the message body | [optional]
+
+### Return type
+
+[**CursorPagedModelMessageResource**](CursorPagedModelMessageResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **retrieveMessage**
+> MessageResource retrieveMessage(id)
+
+Retrieve a message
+
+Returns a message by ID
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = MessagesApi()
+val id : kotlin.Long = 789 // kotlin.Long | Message ID
+try {
+ val result : MessageResource = apiInstance.retrieveMessage(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling MessagesApi#retrieveMessage")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling MessagesApi#retrieveMessage")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Message ID |
+
+### Return type
+
+[**MessageResource**](MessageResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **updateMessage**
+> MessageResource updateMessage(id, messagePropertiesPatch)
+
+Update a message
+
+Updates a message properties
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = MessagesApi()
+val id : kotlin.Long = 789 // kotlin.Long | Message ID
+val messagePropertiesPatch : MessagePropertiesPatch = // MessagePropertiesPatch |
+try {
+ val result : MessageResource = apiInstance.updateMessage(id, messagePropertiesPatch)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling MessagesApi#updateMessage")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling MessagesApi#updateMessage")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Message ID |
+ **messagePropertiesPatch** | [**MessagePropertiesPatch**](MessagePropertiesPatch.md)| | [optional]
+
+### Return type
+
+[**MessageResource**](MessageResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/NotificationData.md b/examples/android-example/models/docs/NotificationData.md
new file mode 100644
index 00000000..e1dbc631
--- /dev/null
+++ b/examples/android-example/models/docs/NotificationData.md
@@ -0,0 +1,10 @@
+
+# NotificationData
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | The type of notification that was received. This specifies the schema of the notification data |
+
+
+
diff --git a/examples/android-example/models/docs/NotificationResource.md b/examples/android-example/models/docs/NotificationResource.md
new file mode 100644
index 00000000..2831f438
--- /dev/null
+++ b/examples/android-example/models/docs/NotificationResource.md
@@ -0,0 +1,18 @@
+
+# NotificationResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**body** | **kotlin.String** | The text body of this notification |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | Time this notification was created |
+**`data`** | [**NotificationData**](NotificationData.md) | |
+**muted** | **kotlin.Boolean** | True if this notification should be muted |
+**title** | **kotlin.String** | The title of this notification |
+**channel** | [**NotificationResourceChannel**](NotificationResourceChannel.md) | | [optional]
+**readTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | Time this notification was read | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/NotificationResourceChannel.md b/examples/android-example/models/docs/NotificationResourceChannel.md
new file mode 100644
index 00000000..cd45ad84
--- /dev/null
+++ b/examples/android-example/models/docs/NotificationResourceChannel.md
@@ -0,0 +1,25 @@
+
+# NotificationResourceChannel
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this channel |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this channel was created |
+**members** | [**kotlin.collections.List<ChatUserProperties>**](ChatUserProperties.md) | The members of this channel. Present if this is a direct channel. For other channel types, use [**list channel messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel |
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users |
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel |
+**creator** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**lastReceivedMessage** | [**MessageProperties**](MessageProperties.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | DIRECT, PUBLIC, PRIVATE
+
+
+
diff --git a/examples/android-example/models/docs/PageMetadata.md b/examples/android-example/models/docs/PageMetadata.md
new file mode 100644
index 00000000..dab82133
--- /dev/null
+++ b/examples/android-example/models/docs/PageMetadata.md
@@ -0,0 +1,13 @@
+
+# PageMetadata
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**number** | **kotlin.Long** | | [optional]
+**propertySize** | **kotlin.Long** | | [optional]
+**totalElements** | **kotlin.Long** | | [optional]
+**totalPages** | **kotlin.Long** | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelApplicationJobResource.md b/examples/android-example/models/docs/PagedModelApplicationJobResource.md
new file mode 100644
index 00000000..3dc09ea9
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelApplicationJobResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelApplicationJobResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelApplicationJobResourceEmbedded**](PagedModelApplicationJobResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelApplicationJobResourceEmbedded.md b/examples/android-example/models/docs/PagedModelApplicationJobResourceEmbedded.md
new file mode 100644
index 00000000..06c1fbf6
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelApplicationJobResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelApplicationJobResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**jobs** | [**kotlin.collections.List<ApplicationJobResource>**](ApplicationJobResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChannelInviteResource.md b/examples/android-example/models/docs/PagedModelChannelInviteResource.md
new file mode 100644
index 00000000..c0426404
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChannelInviteResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelChannelInviteResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelChannelInviteResourceEmbedded**](PagedModelChannelInviteResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChannelInviteResourceEmbedded.md b/examples/android-example/models/docs/PagedModelChannelInviteResourceEmbedded.md
new file mode 100644
index 00000000..d183f4d2
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChannelInviteResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelChannelInviteResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**invites** | [**kotlin.collections.List<ChannelInviteResource>**](ChannelInviteResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChannelMembershipResource.md b/examples/android-example/models/docs/PagedModelChannelMembershipResource.md
new file mode 100644
index 00000000..e399410a
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChannelMembershipResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelChannelMembershipResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelChannelMembershipResourceEmbedded**](PagedModelChannelMembershipResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChannelMembershipResourceEmbedded.md b/examples/android-example/models/docs/PagedModelChannelMembershipResourceEmbedded.md
new file mode 100644
index 00000000..43b0dd17
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChannelMembershipResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelChannelMembershipResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**memberships** | [**kotlin.collections.List<ChannelMembershipResource>**](ChannelMembershipResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChannelResource.md b/examples/android-example/models/docs/PagedModelChannelResource.md
new file mode 100644
index 00000000..60912076
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChannelResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelChannelResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelChannelResourceEmbedded**](PagedModelChannelResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChannelResourceEmbedded.md b/examples/android-example/models/docs/PagedModelChannelResourceEmbedded.md
new file mode 100644
index 00000000..8dba66d5
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChannelResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelChannelResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**channels** | [**kotlin.collections.List<ChannelResource>**](ChannelResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatFunctionInvocationResource.md b/examples/android-example/models/docs/PagedModelChatFunctionInvocationResource.md
new file mode 100644
index 00000000..a205ae65
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatFunctionInvocationResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelChatFunctionInvocationResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelChatFunctionInvocationResourceEmbedded**](PagedModelChatFunctionInvocationResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatFunctionInvocationResourceEmbedded.md b/examples/android-example/models/docs/PagedModelChatFunctionInvocationResourceEmbedded.md
new file mode 100644
index 00000000..3f2b0193
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatFunctionInvocationResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelChatFunctionInvocationResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**invocations** | [**kotlin.collections.List<ChatFunctionInvocationResource>**](ChatFunctionInvocationResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatFunctionResource.md b/examples/android-example/models/docs/PagedModelChatFunctionResource.md
new file mode 100644
index 00000000..3486ad42
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatFunctionResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelChatFunctionResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelChatFunctionResourceEmbedded**](PagedModelChatFunctionResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatFunctionResourceEmbedded.md b/examples/android-example/models/docs/PagedModelChatFunctionResourceEmbedded.md
new file mode 100644
index 00000000..32775386
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatFunctionResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelChatFunctionResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**functions** | [**kotlin.collections.List<ChatFunctionResource>**](ChatFunctionResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatFunctionVersionResource.md b/examples/android-example/models/docs/PagedModelChatFunctionVersionResource.md
new file mode 100644
index 00000000..dd89dd0b
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatFunctionVersionResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelChatFunctionVersionResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelChatFunctionVersionResourceEmbedded**](PagedModelChatFunctionVersionResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatFunctionVersionResourceEmbedded.md b/examples/android-example/models/docs/PagedModelChatFunctionVersionResourceEmbedded.md
new file mode 100644
index 00000000..f21a518f
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatFunctionVersionResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelChatFunctionVersionResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**versions** | [**kotlin.collections.List<ChatFunctionVersionResource>**](ChatFunctionVersionResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatSessionResource.md b/examples/android-example/models/docs/PagedModelChatSessionResource.md
new file mode 100644
index 00000000..af11c874
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatSessionResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelChatSessionResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelChatSessionResourceEmbedded**](PagedModelChatSessionResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatSessionResourceEmbedded.md b/examples/android-example/models/docs/PagedModelChatSessionResourceEmbedded.md
new file mode 100644
index 00000000..cc162746
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatSessionResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelChatSessionResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**sessions** | [**kotlin.collections.List<ChatSessionResource>**](ChatSessionResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatUserResource.md b/examples/android-example/models/docs/PagedModelChatUserResource.md
new file mode 100644
index 00000000..aeff228b
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatUserResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelChatUserResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelChatUserResourceEmbedded**](PagedModelChatUserResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatUserResourceEmbedded.md b/examples/android-example/models/docs/PagedModelChatUserResourceEmbedded.md
new file mode 100644
index 00000000..a3264cb9
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatUserResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelChatUserResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**users** | [**kotlin.collections.List<ChatUserResource>**](ChatUserResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatUserSessionResource.md b/examples/android-example/models/docs/PagedModelChatUserSessionResource.md
new file mode 100644
index 00000000..81698976
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatUserSessionResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelChatUserSessionResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelChatUserSessionResourceEmbedded**](PagedModelChatUserSessionResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelChatUserSessionResourceEmbedded.md b/examples/android-example/models/docs/PagedModelChatUserSessionResourceEmbedded.md
new file mode 100644
index 00000000..d27febdf
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelChatUserSessionResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelChatUserSessionResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**sessions** | [**kotlin.collections.List<ChatUserSessionResource>**](ChatUserSessionResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelMessageReadReceiptResource.md b/examples/android-example/models/docs/PagedModelMessageReadReceiptResource.md
new file mode 100644
index 00000000..acba6444
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelMessageReadReceiptResource.md
@@ -0,0 +1,12 @@
+
+# PagedModelMessageReadReceiptResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**embedded** | [**PagedModelMessageReadReceiptResourceEmbedded**](PagedModelMessageReadReceiptResourceEmbedded.md) | | [optional]
+**page** | [**PageMetadata**](PageMetadata.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PagedModelMessageReadReceiptResourceEmbedded.md b/examples/android-example/models/docs/PagedModelMessageReadReceiptResourceEmbedded.md
new file mode 100644
index 00000000..09c92183
--- /dev/null
+++ b/examples/android-example/models/docs/PagedModelMessageReadReceiptResourceEmbedded.md
@@ -0,0 +1,10 @@
+
+# PagedModelMessageReadReceiptResourceEmbedded
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**receipts** | [**kotlin.collections.List<MessageReadReceiptResource>**](MessageReadReceiptResource.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PrivateChannelImport.md b/examples/android-example/models/docs/PrivateChannelImport.md
new file mode 100644
index 00000000..80baeccd
--- /dev/null
+++ b/examples/android-example/models/docs/PrivateChannelImport.md
@@ -0,0 +1,11 @@
+
+# PrivateChannelImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel. If absent defaults to a random UUID | [optional]
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users. If absent defaults to the channel name | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PrivateChannelProperties.md b/examples/android-example/models/docs/PrivateChannelProperties.md
new file mode 100644
index 00000000..8101bbe7
--- /dev/null
+++ b/examples/android-example/models/docs/PrivateChannelProperties.md
@@ -0,0 +1,24 @@
+
+# PrivateChannelProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this channel |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this channel was created |
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users |
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel |
+**creator** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**lastReceivedMessage** | [**MessageProperties**](MessageProperties.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | DIRECT, PUBLIC, PRIVATE
+
+
+
diff --git a/examples/android-example/models/docs/PrivateChannelResource.md b/examples/android-example/models/docs/PrivateChannelResource.md
new file mode 100644
index 00000000..336fb01c
--- /dev/null
+++ b/examples/android-example/models/docs/PrivateChannelResource.md
@@ -0,0 +1,25 @@
+
+# PrivateChannelResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this channel |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this channel was created |
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users |
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel |
+**creator** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**lastReceivedMessage** | [**MessageProperties**](MessageProperties.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | DIRECT, PUBLIC, PRIVATE
+
+
+
diff --git a/examples/android-example/models/docs/PublicChannelImport.md b/examples/android-example/models/docs/PublicChannelImport.md
new file mode 100644
index 00000000..75d5524a
--- /dev/null
+++ b/examples/android-example/models/docs/PublicChannelImport.md
@@ -0,0 +1,11 @@
+
+# PublicChannelImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel. If absent defaults to a random UUID | [optional]
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users. If absent defaults to the channel name | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/PublicChannelProperties.md b/examples/android-example/models/docs/PublicChannelProperties.md
new file mode 100644
index 00000000..c4fad4ed
--- /dev/null
+++ b/examples/android-example/models/docs/PublicChannelProperties.md
@@ -0,0 +1,24 @@
+
+# PublicChannelProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this channel |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this channel was created |
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users |
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel |
+**creator** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**lastReceivedMessage** | [**MessageProperties**](MessageProperties.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | DIRECT, PUBLIC, PRIVATE
+
+
+
diff --git a/examples/android-example/models/docs/PublicChannelResource.md b/examples/android-example/models/docs/PublicChannelResource.md
new file mode 100644
index 00000000..36ef00c0
--- /dev/null
+++ b/examples/android-example/models/docs/PublicChannelResource.md
@@ -0,0 +1,25 @@
+
+# PublicChannelResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this channel |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this channel was created |
+**displayName** | **kotlin.String** | Human readable name of this channel shown to users |
+**name** | **kotlin.String** | The unique name of this channel used to reference the channel |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this channel |
+**creator** | [**ChatUserProperties**](ChatUserProperties.md) | | [optional]
+**lastReceivedMessage** | [**MessageProperties**](MessageProperties.md) | | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | DIRECT, PUBLIC, PRIVATE
+
+
+
diff --git a/examples/android-example/models/docs/ReplyThreadKeystrokesResource.md b/examples/android-example/models/docs/ReplyThreadKeystrokesResource.md
new file mode 100644
index 00000000..2dddfc64
--- /dev/null
+++ b/examples/android-example/models/docs/ReplyThreadKeystrokesResource.md
@@ -0,0 +1,12 @@
+
+# ReplyThreadKeystrokesResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**propertyKeys** | **kotlin.String** | |
+**username** | **kotlin.String** | |
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/ReplyThreadResource.md b/examples/android-example/models/docs/ReplyThreadResource.md
new file mode 100644
index 00000000..b9322528
--- /dev/null
+++ b/examples/android-example/models/docs/ReplyThreadResource.md
@@ -0,0 +1,22 @@
+
+# ReplyThreadResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this thread |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The ISO date-time this thread was created |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this thread |
+**name** | **kotlin.String** | The name of this thread | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | MAIN, STANDALONE, MESSAGE
+
+
+
diff --git a/examples/android-example/models/docs/RuntimeApi.md b/examples/android-example/models/docs/RuntimeApi.md
new file mode 100644
index 00000000..300205ea
--- /dev/null
+++ b/examples/android-example/models/docs/RuntimeApi.md
@@ -0,0 +1,308 @@
+# RuntimeApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**createNodejsRuntimeFunction**](RuntimeApi.md#createNodejsRuntimeFunction) | **POST** /v1/runtimes/nodejs/functions | Create a NodeJS chat runtime function
+[**listNodejsRuntimeFunctions**](RuntimeApi.md#listNodejsRuntimeFunctions) | **GET** /v1/runtimes/nodejs/functions | List NodeJS chat runtime functions
+[**retrieveNodejsRuntime**](RuntimeApi.md#retrieveNodejsRuntime) | **GET** /v1/runtimes/nodejs | Retrieve NodeJS chat runtime
+[**updateNodejsRuntimeDependencies**](RuntimeApi.md#updateNodejsRuntimeDependencies) | **PUT** /v1/runtimes/nodejs/dependencies | Update NodeJS chat runtime NPM dependencies
+[**updateNodejsRuntimeEnvironmentVariables**](RuntimeApi.md#updateNodejsRuntimeEnvironmentVariables) | **PUT** /v1/runtimes/nodejs/environment-variables | Update NodeJS chat runtime environment variables
+[**updateNodejsRuntimeInitializationScript**](RuntimeApi.md#updateNodejsRuntimeInitializationScript) | **PUT** /v1/runtimes/nodejs/initialization-script | Update NodeJS chat runtime initialization script
+
+
+
+# **createNodejsRuntimeFunction**
+> ChatFunctionResource createNodejsRuntimeFunction(createChatFunctionResource)
+
+Create a NodeJS chat runtime function
+
+Creates a NodeJS chat function for this runtime
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = RuntimeApi()
+val createChatFunctionResource : CreateChatFunctionResource = // CreateChatFunctionResource |
+try {
+ val result : ChatFunctionResource = apiInstance.createNodejsRuntimeFunction(createChatFunctionResource)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling RuntimeApi#createNodejsRuntimeFunction")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling RuntimeApi#createNodejsRuntimeFunction")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **createChatFunctionResource** | [**CreateChatFunctionResource**](CreateChatFunctionResource.md)| |
+
+### Return type
+
+[**ChatFunctionResource**](ChatFunctionResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listNodejsRuntimeFunctions**
+> PagedModelChatFunctionResource listNodejsRuntimeFunctions(page, size, sort)
+
+List NodeJS chat runtime functions
+
+Returns a page of functions for this application's NodeJS chat runtime
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = RuntimeApi()
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+try {
+ val result : PagedModelChatFunctionResource = apiInstance.listNodejsRuntimeFunctions(page, size, sort)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling RuntimeApi#listNodejsRuntimeFunctions")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling RuntimeApi#listNodejsRuntimeFunctions")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+
+### Return type
+
+[**PagedModelChatFunctionResource**](PagedModelChatFunctionResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **retrieveNodejsRuntime**
+> ChatRuntimeResource retrieveNodejsRuntime()
+
+Retrieve NodeJS chat runtime
+
+Return this application's NodeJS chat runtime
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = RuntimeApi()
+try {
+ val result : ChatRuntimeResource = apiInstance.retrieveNodejsRuntime()
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling RuntimeApi#retrieveNodejsRuntime")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling RuntimeApi#retrieveNodejsRuntime")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**ChatRuntimeResource**](ChatRuntimeResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **updateNodejsRuntimeDependencies**
+> ChatRuntimeResource updateNodejsRuntimeDependencies(chatRuntimeDependencyProperties)
+
+Update NodeJS chat runtime NPM dependencies
+
+Updates the NPM dependencies for this application's NodeJS chat runtime
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = RuntimeApi()
+val chatRuntimeDependencyProperties : kotlin.collections.List = // kotlin.collections.List |
+try {
+ val result : ChatRuntimeResource = apiInstance.updateNodejsRuntimeDependencies(chatRuntimeDependencyProperties)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling RuntimeApi#updateNodejsRuntimeDependencies")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling RuntimeApi#updateNodejsRuntimeDependencies")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **chatRuntimeDependencyProperties** | [**kotlin.collections.List<ChatRuntimeDependencyProperties>**](ChatRuntimeDependencyProperties.md)| |
+
+### Return type
+
+[**ChatRuntimeResource**](ChatRuntimeResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **updateNodejsRuntimeEnvironmentVariables**
+> ChatRuntimeResource updateNodejsRuntimeEnvironmentVariables(chatRuntimeEnvironmentVariablesProperties)
+
+Update NodeJS chat runtime environment variables
+
+Updates the runtime environment variables of this application's NodeJS chat runtime
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = RuntimeApi()
+val chatRuntimeEnvironmentVariablesProperties : ChatRuntimeEnvironmentVariablesProperties = // ChatRuntimeEnvironmentVariablesProperties |
+try {
+ val result : ChatRuntimeResource = apiInstance.updateNodejsRuntimeEnvironmentVariables(chatRuntimeEnvironmentVariablesProperties)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling RuntimeApi#updateNodejsRuntimeEnvironmentVariables")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling RuntimeApi#updateNodejsRuntimeEnvironmentVariables")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **chatRuntimeEnvironmentVariablesProperties** | [**ChatRuntimeEnvironmentVariablesProperties**](ChatRuntimeEnvironmentVariablesProperties.md)| |
+
+### Return type
+
+[**ChatRuntimeResource**](ChatRuntimeResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **updateNodejsRuntimeInitializationScript**
+> ChatRuntimeResource updateNodejsRuntimeInitializationScript(chatRuntimeScriptProperties)
+
+Update NodeJS chat runtime initialization script
+
+Updates the initialization script for this application's NodeJS chat runtime
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = RuntimeApi()
+val chatRuntimeScriptProperties : ChatRuntimeScriptProperties = // ChatRuntimeScriptProperties |
+try {
+ val result : ChatRuntimeResource = apiInstance.updateNodejsRuntimeInitializationScript(chatRuntimeScriptProperties)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling RuntimeApi#updateNodejsRuntimeInitializationScript")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling RuntimeApi#updateNodejsRuntimeInitializationScript")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **chatRuntimeScriptProperties** | [**ChatRuntimeScriptProperties**](ChatRuntimeScriptProperties.md)| |
+
+### Return type
+
+[**ChatRuntimeResource**](ChatRuntimeResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/SecretResource.md b/examples/android-example/models/docs/SecretResource.md
new file mode 100644
index 00000000..9bc3ccc2
--- /dev/null
+++ b/examples/android-example/models/docs/SecretResource.md
@@ -0,0 +1,10 @@
+
+# SecretResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**secret** | [**kotlin.Any**](.md) | Secret value | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/SendChannelMessageRequest.md b/examples/android-example/models/docs/SendChannelMessageRequest.md
new file mode 100644
index 00000000..71ccf162
--- /dev/null
+++ b/examples/android-example/models/docs/SendChannelMessageRequest.md
@@ -0,0 +1,14 @@
+
+# SendChannelMessageRequest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **kotlin.String** | |
+**body** | **kotlin.String** | The text body of this message |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message | [optional]
+**user** | [**AddChannelMemberRequest**](AddChannelMemberRequest.md) | | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/SystemMessageResource.md b/examples/android-example/models/docs/SystemMessageResource.md
new file mode 100644
index 00000000..905b3893
--- /dev/null
+++ b/examples/android-example/models/docs/SystemMessageResource.md
@@ -0,0 +1,31 @@
+
+# SystemMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this message |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**channelId** | **kotlin.Long** | The ID of the channel this message belongs to |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was created |
+**nestedLevel** | **kotlin.Int** | The nested thread level of this message |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message |
+**body** | **kotlin.String** | The text body of this message |
+**file** | [**FileProperties**](FileProperties.md) | |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**lastEditedTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was last edited | [optional]
+**reactions** | [**kotlin.collections.List<MessageReactionsSummaryProperties>**](MessageReactionsSummaryProperties.md) | Reactions to this message | [optional]
+**repliesCount** | **kotlin.Long** | The number of replies to this message | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+**links** | [**kotlin.collections.List<MessageLinkProperties>**](MessageLinkProperties.md) | Link previews in this message | [optional]
+**mentions** | [**kotlin.collections.List<MessageMentionProperties>**](MessageMentionProperties.md) | Mentions in this message | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | TEXT, FILE, SYSTEM_TEXT, SYSTEM_FILE
+
+
+
diff --git a/examples/android-example/models/docs/TextChatUserMessageImport.md b/examples/android-example/models/docs/TextChatUserMessageImport.md
new file mode 100644
index 00000000..87e1e3e8
--- /dev/null
+++ b/examples/android-example/models/docs/TextChatUserMessageImport.md
@@ -0,0 +1,11 @@
+
+# TextChatUserMessageImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**body** | **kotlin.String** | The text body of this message |
+**user** | **kotlin.String** | Username of the user who sent this message |
+
+
+
diff --git a/examples/android-example/models/docs/TextChatUserMessageProperties.md b/examples/android-example/models/docs/TextChatUserMessageProperties.md
new file mode 100644
index 00000000..e59473e1
--- /dev/null
+++ b/examples/android-example/models/docs/TextChatUserMessageProperties.md
@@ -0,0 +1,13 @@
+
+# TextChatUserMessageProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**body** | **kotlin.String** | The text body of this message |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+**links** | [**kotlin.collections.List<MessageLinkProperties>**](MessageLinkProperties.md) | Link previews in this message | [optional]
+**mentions** | [**kotlin.collections.List<MessageMentionProperties>**](MessageMentionProperties.md) | Mentions in this message | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/TextChatUserMessageResource.md b/examples/android-example/models/docs/TextChatUserMessageResource.md
new file mode 100644
index 00000000..c50b181a
--- /dev/null
+++ b/examples/android-example/models/docs/TextChatUserMessageResource.md
@@ -0,0 +1,31 @@
+
+# TextChatUserMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this message |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**body** | **kotlin.String** | The text body of this message |
+**channelId** | **kotlin.Long** | The ID of the channel this message belongs to |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was created |
+**nestedLevel** | **kotlin.Int** | The nested thread level of this message |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**lastEditedTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was last edited | [optional]
+**links** | [**kotlin.collections.List<MessageLinkProperties>**](MessageLinkProperties.md) | Link previews in this message | [optional]
+**mentions** | [**kotlin.collections.List<MessageMentionProperties>**](MessageMentionProperties.md) | Mentions in this message | [optional]
+**reactions** | [**kotlin.collections.List<MessageReactionsSummaryProperties>**](MessageReactionsSummaryProperties.md) | Reactions to this message | [optional]
+**repliesCount** | **kotlin.Long** | The number of replies to this message | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | TEXT, FILE, SYSTEM_TEXT, SYSTEM_FILE
+
+
+
diff --git a/examples/android-example/models/docs/TextMessageImport.md b/examples/android-example/models/docs/TextMessageImport.md
new file mode 100644
index 00000000..8914932d
--- /dev/null
+++ b/examples/android-example/models/docs/TextMessageImport.md
@@ -0,0 +1,14 @@
+
+# TextMessageImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**body** | **kotlin.String** | The text body of this message |
+**channelId** | **kotlin.Long** | ID of the channel this message belongs to |
+**groupTag** | **kotlin.String** | Tag identifying the message group this message belongs to | [optional]
+**idempotencyKey** | **kotlin.String** | Unique value generated by the client which ChatKitty uses to recognize subsequent retries of the same request. Optional but recommended | [optional]
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Map of custom data attached to this message | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/TextMessageResource.md b/examples/android-example/models/docs/TextMessageResource.md
new file mode 100644
index 00000000..115ae715
--- /dev/null
+++ b/examples/android-example/models/docs/TextMessageResource.md
@@ -0,0 +1,31 @@
+
+# TextMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this message |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**channelId** | **kotlin.Long** | The ID of the channel this message belongs to |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was created |
+**nestedLevel** | **kotlin.Int** | The nested thread level of this message |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message |
+**body** | **kotlin.String** | The text body of this message |
+**user** | [**ChatUserProperties**](ChatUserProperties.md) | |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**lastEditedTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was last edited | [optional]
+**reactions** | [**kotlin.collections.List<MessageReactionsSummaryProperties>**](MessageReactionsSummaryProperties.md) | Reactions to this message | [optional]
+**repliesCount** | **kotlin.Long** | The number of replies to this message | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+**links** | [**kotlin.collections.List<MessageLinkProperties>**](MessageLinkProperties.md) | Link previews in this message | [optional]
+**mentions** | [**kotlin.collections.List<MessageMentionProperties>**](MessageMentionProperties.md) | Mentions in this message | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | TEXT, FILE, SYSTEM_TEXT, SYSTEM_FILE
+
+
+
diff --git a/examples/android-example/models/docs/TextSystemMessageImport.md b/examples/android-example/models/docs/TextSystemMessageImport.md
new file mode 100644
index 00000000..4787fcde
--- /dev/null
+++ b/examples/android-example/models/docs/TextSystemMessageImport.md
@@ -0,0 +1,10 @@
+
+# TextSystemMessageImport
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**body** | **kotlin.String** | The text body of this message |
+
+
+
diff --git a/examples/android-example/models/docs/TextSystemMessageProperties.md b/examples/android-example/models/docs/TextSystemMessageProperties.md
new file mode 100644
index 00000000..2f5a6cb1
--- /dev/null
+++ b/examples/android-example/models/docs/TextSystemMessageProperties.md
@@ -0,0 +1,12 @@
+
+# TextSystemMessageProperties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**body** | **kotlin.String** | The text body of this message |
+**links** | [**kotlin.collections.List<MessageLinkProperties>**](MessageLinkProperties.md) | Link previews in this message | [optional]
+**mentions** | [**kotlin.collections.List<MessageMentionProperties>**](MessageMentionProperties.md) | Mentions in this message | [optional]
+
+
+
diff --git a/examples/android-example/models/docs/TextSystemMessageResource.md b/examples/android-example/models/docs/TextSystemMessageResource.md
new file mode 100644
index 00000000..e75fc7c5
--- /dev/null
+++ b/examples/android-example/models/docs/TextSystemMessageResource.md
@@ -0,0 +1,30 @@
+
+# TextSystemMessageResource
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | [**inline**](#Type) | The type of this message |
+**id** | **kotlin.Long** | 64-bit integer identifier associated with this resource |
+**body** | **kotlin.String** | The text body of this message |
+**channelId** | **kotlin.Long** | The ID of the channel this message belongs to |
+**createdTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was created |
+**nestedLevel** | **kotlin.Int** | The nested thread level of this message |
+**properties** | [**kotlin.collections.Map<kotlin.String, kotlin.Any>**](kotlin.Any.md) | Custom data associated with this message |
+**groupTag** | **kotlin.String** | Optional string to associate this message with other messages. Can be used to group messages into a gallery | [optional]
+**lastEditedTime** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | The time this message was last edited | [optional]
+**links** | [**kotlin.collections.List<MessageLinkProperties>**](MessageLinkProperties.md) | Link previews in this message | [optional]
+**mentions** | [**kotlin.collections.List<MessageMentionProperties>**](MessageMentionProperties.md) | Mentions in this message | [optional]
+**reactions** | [**kotlin.collections.List<MessageReactionsSummaryProperties>**](MessageReactionsSummaryProperties.md) | Reactions to this message | [optional]
+**repliesCount** | **kotlin.Long** | The number of replies to this message | [optional]
+**links** | [**kotlin.collections.Map<kotlin.String, Link>**](Link.md) | | [optional]
+
+
+
+## Enum: type
+Name | Value
+---- | -----
+type | TEXT, FILE, SYSTEM_TEXT, SYSTEM_FILE
+
+
+
diff --git a/examples/android-example/models/docs/ThreadsApi.md b/examples/android-example/models/docs/ThreadsApi.md
new file mode 100644
index 00000000..a1dc6131
--- /dev/null
+++ b/examples/android-example/models/docs/ThreadsApi.md
@@ -0,0 +1,220 @@
+# ThreadsApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**listThreadMessages**](ThreadsApi.md#listThreadMessages) | **GET** /v1/threads/{id}/messages | List reply thread messages
+[**retrieveThread**](ThreadsApi.md#retrieveThread) | **GET** /v1/threads/{id} | Retrieve a thread
+[**sendThreadKeystrokes**](ThreadsApi.md#sendThreadKeystrokes) | **POST** /v1/threads/{id}/keystrokes | Send thread keystrokes
+[**sendThreadMessage**](ThreadsApi.md#sendThreadMessage) | **POST** /v1/threads/{id}/messages | Send a reply thread message
+
+
+
+# **listThreadMessages**
+> CursorPagedModelMessageResource listThreadMessages(id, size, start, next, relation)
+
+List reply thread messages
+
+Returns a page of replies sent in this thread
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ThreadsApi()
+val id : kotlin.Long = 789 // kotlin.Long |
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val start : kotlin.Long = 789 // kotlin.Long | Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages
+val next : kotlin.Long = 789 // kotlin.Long | Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages
+val relation : kotlin.String = relation_example // kotlin.String | Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages
+try {
+ val result : CursorPagedModelMessageResource = apiInstance.listThreadMessages(id, size, start, next, relation)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ThreadsApi#listThreadMessages")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ThreadsApi#listThreadMessages")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| |
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional]
+ **start** | **kotlin.Long**| Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages | [optional]
+ **next** | **kotlin.Long**| Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages | [optional]
+ **relation** | **kotlin.String**| Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages | [optional] [enum: SELF, PREVIOUS, NEXT]
+
+### Return type
+
+[**CursorPagedModelMessageResource**](CursorPagedModelMessageResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **retrieveThread**
+> ReplyThreadResource retrieveThread(id)
+
+Retrieve a thread
+
+Returns a thread by ID
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ThreadsApi()
+val id : kotlin.Long = 789 // kotlin.Long | Reply thread ID
+try {
+ val result : ReplyThreadResource = apiInstance.retrieveThread(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ThreadsApi#retrieveThread")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ThreadsApi#retrieveThread")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| Reply thread ID |
+
+### Return type
+
+[**ReplyThreadResource**](ReplyThreadResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **sendThreadKeystrokes**
+> ReplyThreadKeystrokesResource sendThreadKeystrokes(id, createDelegatedReplyThreadKeystrokesResource)
+
+Send thread keystrokes
+
+Sends keystrokes in this thread on behalf of a user
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ThreadsApi()
+val id : kotlin.Long = 789 // kotlin.Long |
+val createDelegatedReplyThreadKeystrokesResource : CreateDelegatedReplyThreadKeystrokesResource = // CreateDelegatedReplyThreadKeystrokesResource |
+try {
+ val result : ReplyThreadKeystrokesResource = apiInstance.sendThreadKeystrokes(id, createDelegatedReplyThreadKeystrokesResource)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ThreadsApi#sendThreadKeystrokes")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ThreadsApi#sendThreadKeystrokes")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| |
+ **createDelegatedReplyThreadKeystrokesResource** | [**CreateDelegatedReplyThreadKeystrokesResource**](CreateDelegatedReplyThreadKeystrokesResource.md)| |
+
+### Return type
+
+[**ReplyThreadKeystrokesResource**](ReplyThreadKeystrokesResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **sendThreadMessage**
+> MessageResource sendThreadMessage(id, sendChannelMessageRequest)
+
+Send a reply thread message
+
+Sends a reply message in this thread as the system or on behalf of a user
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = ThreadsApi()
+val id : kotlin.Long = 789 // kotlin.Long |
+val sendChannelMessageRequest : SendChannelMessageRequest = // SendChannelMessageRequest |
+try {
+ val result : MessageResource = apiInstance.sendThreadMessage(id, sendChannelMessageRequest)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling ThreadsApi#sendThreadMessage")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling ThreadsApi#sendThreadMessage")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| |
+ **sendChannelMessageRequest** | [**SendChannelMessageRequest**](SendChannelMessageRequest.md)| |
+
+### Return type
+
+[**MessageResource**](MessageResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/UserSessionsApi.md b/examples/android-example/models/docs/UserSessionsApi.md
new file mode 100644
index 00000000..0a19991e
--- /dev/null
+++ b/examples/android-example/models/docs/UserSessionsApi.md
@@ -0,0 +1,64 @@
+# UserSessionsApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**listUserSessions**](UserSessionsApi.md#listUserSessions) | **GET** /v1/user-sessions | List user sessions
+
+
+
+# **listUserSessions**
+> PagedModelChatUserSessionResource listUserSessions(page, size, sort, state)
+
+List user sessions
+
+Returns a page of user sessions belonging to this application
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserSessionsApi()
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+val state : kotlin.String = state_example // kotlin.String | Filters by state
+try {
+ val result : PagedModelChatUserSessionResource = apiInstance.listUserSessions(page, size, sort, state)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UserSessionsApi#listUserSessions")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UserSessionsApi#listUserSessions")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+ **state** | **kotlin.String**| Filters by state | [optional] [enum: ACTIVE, ENDED]
+
+### Return type
+
+[**PagedModelChatUserSessionResource**](PagedModelChatUserSessionResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/docs/UsersApi.md b/examples/android-example/models/docs/UsersApi.md
new file mode 100644
index 00000000..72507c22
--- /dev/null
+++ b/examples/android-example/models/docs/UsersApi.md
@@ -0,0 +1,702 @@
+# UsersApi
+
+All URIs are relative to *https://api.chatkitty.com*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**checkUserExists**](UsersApi.md#checkUserExists) | **HEAD** /v1/users | Check a user exists
+[**createUser**](UsersApi.md#createUser) | **POST** /v1/users | Create a user
+[**deleteUser**](UsersApi.md#deleteUser) | **DELETE** /v1/users/{id} | Delete a user
+[**listUserChannels**](UsersApi.md#listUserChannels) | **GET** /v1/users/{id}/channels | List a user's channels
+[**listUserMessages**](UsersApi.md#listUserMessages) | **GET** /v1/users/{id}/messages | List a user's messages
+[**listUserNotifications**](UsersApi.md#listUserNotifications) | **GET** /v1/users/{id}/notifications | List a user's notifications
+[**listUsers**](UsersApi.md#listUsers) | **GET** /v1/users | List users
+[**removeUserSecret**](UsersApi.md#removeUserSecret) | **DELETE** /v1/users/{id}/secrets/{name} | Remove a user secret
+[**retrieveUser**](UsersApi.md#retrieveUser) | **GET** /v1/users/{id} | Retrieve a user
+[**retrieveUserSecret**](UsersApi.md#retrieveUserSecret) | **GET** /v1/users/{id}/secrets/{name} | Retrieve a user secret
+[**setUserSecret**](UsersApi.md#setUserSecret) | **PUT** /v1/users/{id}/secrets/{name} | Set a user secret
+[**updateUser**](UsersApi.md#updateUser) | **PATCH** /v1/users/{id} | Update a user
+[**updateUserDisplayPicture**](UsersApi.md#updateUserDisplayPicture) | **POST** /v1/users/{id}/display-picture | Update a user's display picture
+
+
+
+# **checkUserExists**
+> kotlin.Any checkUserExists(name)
+
+Check a user exists
+
+Checks if a user exists
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val name : kotlin.String = name_example // kotlin.String | Username of the user
+try {
+ val result : kotlin.Any = apiInstance.checkUserExists(name)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#checkUserExists")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#checkUserExists")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **name** | **kotlin.String**| Username of the user |
+
+### Return type
+
+[**kotlin.Any**](kotlin.Any.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **createUser**
+> ChatUserResource createUser(createPersonChatUserResource)
+
+Create a user
+
+Creates a new user
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val createPersonChatUserResource : CreatePersonChatUserResource = // CreatePersonChatUserResource |
+try {
+ val result : ChatUserResource = apiInstance.createUser(createPersonChatUserResource)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#createUser")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#createUser")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **createPersonChatUserResource** | [**CreatePersonChatUserResource**](CreatePersonChatUserResource.md)| |
+
+### Return type
+
+[**ChatUserResource**](ChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **deleteUser**
+> ApplicationResource deleteUser(id)
+
+Delete a user
+
+Delets a user
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val id : kotlin.Long = 789 // kotlin.Long | User ID
+try {
+ val result : ApplicationResource = apiInstance.deleteUser(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#deleteUser")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#deleteUser")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| User ID |
+
+### Return type
+
+[**ApplicationResource**](ApplicationResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listUserChannels**
+> PagedModelChannelResource listUserChannels(id, page, size, sort)
+
+List a user's channels
+
+Returns a page of channels for this user created or joined
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val id : kotlin.Long = 789 // kotlin.Long | User ID
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+try {
+ val result : PagedModelChannelResource = apiInstance.listUserChannels(id, page, size, sort)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#listUserChannels")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#listUserChannels")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| User ID |
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+
+### Return type
+
+[**PagedModelChannelResource**](PagedModelChannelResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listUserMessages**
+> CursorPagedModelMessageResource listUserMessages(id, size, start, next, relation, unread)
+
+List a user's messages
+
+Returns a page of messages sent by this user
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val id : kotlin.Long = 789 // kotlin.Long | User ID
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val start : kotlin.Long = 789 // kotlin.Long | Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages
+val next : kotlin.Long = 789 // kotlin.Long | Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages
+val relation : kotlin.String = relation_example // kotlin.String | Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages
+val unread : kotlin.Boolean = true // kotlin.Boolean | Filters by returning unread messages
+try {
+ val result : CursorPagedModelMessageResource = apiInstance.listUserMessages(id, size, start, next, relation, unread)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#listUserMessages")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#listUserMessages")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| User ID |
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional]
+ **start** | **kotlin.Long**| Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages | [optional]
+ **next** | **kotlin.Long**| Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages | [optional]
+ **relation** | **kotlin.String**| Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages | [optional] [enum: SELF, PREVIOUS, NEXT]
+ **unread** | **kotlin.Boolean**| Filters by returning unread messages | [optional]
+
+### Return type
+
+[**CursorPagedModelMessageResource**](CursorPagedModelMessageResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listUserNotifications**
+> CursorPagedModelNotificationResource listUserNotifications(id, size, start, next, relation)
+
+List a user's notifications
+
+Returns a page of notifications received by this user
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val id : kotlin.Long = 789 // kotlin.Long | User ID
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val start : kotlin.Long = 789 // kotlin.Long | Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages
+val next : kotlin.Long = 789 // kotlin.Long | Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages
+val relation : kotlin.String = relation_example // kotlin.String | Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages
+try {
+ val result : CursorPagedModelNotificationResource = apiInstance.listUserNotifications(id, size, start, next, relation)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#listUserNotifications")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#listUserNotifications")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| User ID |
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional]
+ **start** | **kotlin.Long**| Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages | [optional]
+ **next** | **kotlin.Long**| Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages | [optional]
+ **relation** | **kotlin.String**| Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages | [optional] [enum: SELF, PREVIOUS, NEXT]
+
+### Return type
+
+[**CursorPagedModelNotificationResource**](CursorPagedModelNotificationResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **listUsers**
+> PagedModelChatUserResource listUsers(page, size, sort, name, properties)
+
+List users
+
+Returns a page of users belonging to this application
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val page : kotlin.Int = 56 // kotlin.Int | Zero-based page index (0..N)
+val size : kotlin.Int = 56 // kotlin.Int | The size of the page to be returned
+val sort : kotlin.collections.List = // kotlin.collections.List | Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
+val name : kotlin.String = name_example // kotlin.String | Filters by username
+val properties : kotlin.String = properties_example // kotlin.String | Filters by user custom properties
+try {
+ val result : PagedModelChatUserResource = apiInstance.listUsers(page, size, sort, name, properties)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#listUsers")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#listUsers")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **page** | **kotlin.Int**| Zero-based page index (0..N) | [optional] [default to 0]
+ **size** | **kotlin.Int**| The size of the page to be returned | [optional] [default to 25]
+ **sort** | [**kotlin.collections.List<kotlin.String>**](kotlin.String.md)| Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional]
+ **name** | **kotlin.String**| Filters by username | [optional]
+ **properties** | **kotlin.String**| Filters by user custom properties | [optional]
+
+### Return type
+
+[**PagedModelChatUserResource**](PagedModelChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **removeUserSecret**
+> ChatUserResource removeUserSecret(id, name)
+
+Remove a user secret
+
+Removes a user secret's value
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val id : kotlin.Long = 789 // kotlin.Long | User ID
+val name : kotlin.String = name_example // kotlin.String | The secret's name
+try {
+ val result : ChatUserResource = apiInstance.removeUserSecret(id, name)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#removeUserSecret")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#removeUserSecret")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| User ID |
+ **name** | **kotlin.String**| The secret's name |
+
+### Return type
+
+[**ChatUserResource**](ChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **retrieveUser**
+> ChatUserResource retrieveUser(id)
+
+Retrieve a user
+
+Returns a user by ID
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val id : kotlin.Long = 789 // kotlin.Long | User ID
+try {
+ val result : ChatUserResource = apiInstance.retrieveUser(id)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#retrieveUser")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#retrieveUser")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| User ID |
+
+### Return type
+
+[**ChatUserResource**](ChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **retrieveUserSecret**
+> SecretResource retrieveUserSecret(id, name)
+
+Retrieve a user secret
+
+Returns a user secret
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val id : kotlin.Long = 789 // kotlin.Long | User ID
+val name : kotlin.String = name_example // kotlin.String | The secret's name
+try {
+ val result : SecretResource = apiInstance.retrieveUserSecret(id, name)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#retrieveUserSecret")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#retrieveUserSecret")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| User ID |
+ **name** | **kotlin.String**| The secret's name |
+
+### Return type
+
+[**SecretResource**](SecretResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **setUserSecret**
+> ChatUserResource setUserSecret(id, name, secretResource)
+
+Set a user secret
+
+Sets a user secret's value
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val id : kotlin.Long = 789 // kotlin.Long | User ID
+val name : kotlin.String = name_example // kotlin.String | The secret's name
+val secretResource : SecretResource = // SecretResource |
+try {
+ val result : ChatUserResource = apiInstance.setUserSecret(id, name, secretResource)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#setUserSecret")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#setUserSecret")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| User ID |
+ **name** | **kotlin.String**| The secret's name |
+ **secretResource** | [**SecretResource**](SecretResource.md)| |
+
+### Return type
+
+[**ChatUserResource**](ChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **updateUser**
+> ChatUserResource updateUser(id, chatUserPropertiesPatch)
+
+Update a user
+
+Updates a user
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val id : kotlin.Long = 789 // kotlin.Long | User ID
+val chatUserPropertiesPatch : ChatUserPropertiesPatch = // ChatUserPropertiesPatch |
+try {
+ val result : ChatUserResource = apiInstance.updateUser(id, chatUserPropertiesPatch)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#updateUser")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#updateUser")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| User ID |
+ **chatUserPropertiesPatch** | [**ChatUserPropertiesPatch**](ChatUserPropertiesPatch.md)| | [optional]
+
+### Return type
+
+[**ChatUserResource**](ChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
+
+# **updateUserDisplayPicture**
+> ChatUserResource updateUserDisplayPicture(id, createExternalFileProperties)
+
+Update a user's display picture
+
+Updates a user's display picture
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UsersApi()
+val id : kotlin.Long = 789 // kotlin.Long | User ID
+val createExternalFileProperties : CreateExternalFileProperties = // CreateExternalFileProperties |
+try {
+ val result : ChatUserResource = apiInstance.updateUserDisplayPicture(id, createExternalFileProperties)
+ println(result)
+} catch (e: ClientException) {
+ println("4xx response calling UsersApi#updateUserDisplayPicture")
+ e.printStackTrace()
+} catch (e: ServerException) {
+ println("5xx response calling UsersApi#updateUserDisplayPicture")
+ e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **kotlin.Long**| User ID |
+ **createExternalFileProperties** | [**CreateExternalFileProperties**](CreateExternalFileProperties.md)| |
+
+### Return type
+
+[**ChatUserResource**](ChatUserResource.md)
+
+### Authorization
+
+
+Configure application_authorization:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, application/vnd.hal+json, application/hal+json
+
diff --git a/examples/android-example/models/gradle/wrapper/gradle-wrapper.jar b/examples/android-example/models/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..c1962a79
Binary files /dev/null and b/examples/android-example/models/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/examples/android-example/models/gradle/wrapper/gradle-wrapper.properties b/examples/android-example/models/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..8707e8b5
--- /dev/null
+++ b/examples/android-example/models/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip
+networkTimeout=10000
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/examples/android-example/models/gradlew b/examples/android-example/models/gradlew
new file mode 100644
index 00000000..aeb74cbb
--- /dev/null
+++ b/examples/android-example/models/gradlew
@@ -0,0 +1,245 @@
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
+##############################################################################
+
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD=maximum
+
+warn () {
+ echo "$*"
+} >&2
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+} >&2
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD=$JAVA_HOME/jre/sh/java
+ else
+ JAVACMD=$JAVA_HOME/bin/java
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD=java
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
+fi
+
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/examples/android-example/models/gradlew.bat b/examples/android-example/models/gradlew.bat
new file mode 100644
index 00000000..93e3f59f
--- /dev/null
+++ b/examples/android-example/models/gradlew.bat
@@ -0,0 +1,92 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/examples/android-example/models/settings.gradle b/examples/android-example/models/settings.gradle
new file mode 100644
index 00000000..854d039d
--- /dev/null
+++ b/examples/android-example/models/settings.gradle
@@ -0,0 +1,2 @@
+
+rootProject.name = 'kotlin-client'
diff --git a/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/AnalyticsApi.kt b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/AnalyticsApi.kt
new file mode 100644
index 00000000..6a1a457d
--- /dev/null
+++ b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/AnalyticsApi.kt
@@ -0,0 +1,189 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+import okhttp3.OkHttpClient
+import okhttp3.HttpUrl
+
+import org.openapitools.client.models.ApiError
+import org.openapitools.client.models.ApplicationJobResource
+import org.openapitools.client.models.AuthenticationError
+
+import com.squareup.moshi.Json
+
+import org.openapitools.client.infrastructure.ApiClient
+import org.openapitools.client.infrastructure.ApiResponse
+import org.openapitools.client.infrastructure.ClientException
+import org.openapitools.client.infrastructure.ClientError
+import org.openapitools.client.infrastructure.ServerException
+import org.openapitools.client.infrastructure.ServerError
+import org.openapitools.client.infrastructure.MultiValueMap
+import org.openapitools.client.infrastructure.PartConfig
+import org.openapitools.client.infrastructure.RequestConfig
+import org.openapitools.client.infrastructure.RequestMethod
+import org.openapitools.client.infrastructure.ResponseType
+import org.openapitools.client.infrastructure.Success
+import org.openapitools.client.infrastructure.toMultiValue
+
+class AnalyticsApi(basePath: kotlin.String = defaultBasePath, client: OkHttpClient = ApiClient.defaultClient) : ApiClient(basePath, client) {
+ companion object {
+ @JvmStatic
+ val defaultBasePath: String by lazy {
+ System.getProperties().getProperty(ApiClient.baseUrlKey, "https://api.chatkitty.com")
+ }
+ }
+
+ /**
+ * Export message analytics
+ * Batch export message analytics data
+ * @return ApplicationJobResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun exportMessageAnalytics() : ApplicationJobResource {
+ val localVarResponse = exportMessageAnalyticsWithHttpInfo()
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ApplicationJobResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Export message analytics
+ * Batch export message analytics data
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun exportMessageAnalyticsWithHttpInfo() : ApiResponse {
+ val localVariableConfig = exportMessageAnalyticsRequestConfig()
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation exportMessageAnalytics
+ *
+ * @return RequestConfig
+ */
+ fun exportMessageAnalyticsRequestConfig() : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.POST,
+ path = "/v1/analytics/messages",
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Export user analytics
+ * Batch export user analytics data
+ * @return ApplicationJobResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun exportUserAnalytics() : ApplicationJobResource {
+ val localVarResponse = exportUserAnalyticsWithHttpInfo()
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ApplicationJobResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Export user analytics
+ * Batch export user analytics data
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun exportUserAnalyticsWithHttpInfo() : ApiResponse {
+ val localVariableConfig = exportUserAnalyticsRequestConfig()
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation exportUserAnalytics
+ *
+ * @return RequestConfig
+ */
+ fun exportUserAnalyticsRequestConfig() : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.POST,
+ path = "/v1/analytics/users",
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+
+ private fun encodeURIComponent(uriComponent: kotlin.String): kotlin.String =
+ HttpUrl.Builder().scheme("http").host("localhost").addPathSegment(uriComponent).build().encodedPathSegments[0]
+}
diff --git a/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ApplicationApi.kt b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ApplicationApi.kt
new file mode 100644
index 00000000..36afa2ec
--- /dev/null
+++ b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ApplicationApi.kt
@@ -0,0 +1,263 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+import okhttp3.OkHttpClient
+import okhttp3.HttpUrl
+
+import org.openapitools.client.models.ApiError
+import org.openapitools.client.models.ApplicationResource
+import org.openapitools.client.models.ApplicationSettingsProperties
+import org.openapitools.client.models.ApplicationSettingsResource
+import org.openapitools.client.models.AuthenticationError
+
+import com.squareup.moshi.Json
+
+import org.openapitools.client.infrastructure.ApiClient
+import org.openapitools.client.infrastructure.ApiResponse
+import org.openapitools.client.infrastructure.ClientException
+import org.openapitools.client.infrastructure.ClientError
+import org.openapitools.client.infrastructure.ServerException
+import org.openapitools.client.infrastructure.ServerError
+import org.openapitools.client.infrastructure.MultiValueMap
+import org.openapitools.client.infrastructure.PartConfig
+import org.openapitools.client.infrastructure.RequestConfig
+import org.openapitools.client.infrastructure.RequestMethod
+import org.openapitools.client.infrastructure.ResponseType
+import org.openapitools.client.infrastructure.Success
+import org.openapitools.client.infrastructure.toMultiValue
+
+class ApplicationApi(basePath: kotlin.String = defaultBasePath, client: OkHttpClient = ApiClient.defaultClient) : ApiClient(basePath, client) {
+ companion object {
+ @JvmStatic
+ val defaultBasePath: String by lazy {
+ System.getProperties().getProperty(ApiClient.baseUrlKey, "https://api.chatkitty.com")
+ }
+ }
+
+ /**
+ * Retrieve the authenticated application
+ * Returns the ChatKitty application associated with the authentication credentials used. You must use an **OAuth V2 Bearer token** to access this endpoint.
+ * @return ApplicationResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun retrieveAuthenticatedApplication() : ApplicationResource {
+ val localVarResponse = retrieveAuthenticatedApplicationWithHttpInfo()
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ApplicationResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Retrieve the authenticated application
+ * Returns the ChatKitty application associated with the authentication credentials used. You must use an **OAuth V2 Bearer token** to access this endpoint.
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun retrieveAuthenticatedApplicationWithHttpInfo() : ApiResponse {
+ val localVariableConfig = retrieveAuthenticatedApplicationRequestConfig()
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation retrieveAuthenticatedApplication
+ *
+ * @return RequestConfig
+ */
+ fun retrieveAuthenticatedApplicationRequestConfig() : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/application",
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Retrieve the authenticated application settings
+ * Returns the current settings configuring this application
+ * @return ApplicationSettingsResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun retrieveAuthenticatedApplicationSettings() : ApplicationSettingsResource {
+ val localVarResponse = retrieveAuthenticatedApplicationSettingsWithHttpInfo()
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ApplicationSettingsResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Retrieve the authenticated application settings
+ * Returns the current settings configuring this application
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun retrieveAuthenticatedApplicationSettingsWithHttpInfo() : ApiResponse {
+ val localVariableConfig = retrieveAuthenticatedApplicationSettingsRequestConfig()
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation retrieveAuthenticatedApplicationSettings
+ *
+ * @return RequestConfig
+ */
+ fun retrieveAuthenticatedApplicationSettingsRequestConfig() : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/application/settings",
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Update the authenticated application settings
+ * Update the settings configuring this application
+ * @param applicationSettingsProperties
+ * @return ApplicationSettingsResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun updateAuthenticatedApplicationSettings(applicationSettingsProperties: ApplicationSettingsProperties) : ApplicationSettingsResource {
+ val localVarResponse = updateAuthenticatedApplicationSettingsWithHttpInfo(applicationSettingsProperties = applicationSettingsProperties)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ApplicationSettingsResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Update the authenticated application settings
+ * Update the settings configuring this application
+ * @param applicationSettingsProperties
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun updateAuthenticatedApplicationSettingsWithHttpInfo(applicationSettingsProperties: ApplicationSettingsProperties) : ApiResponse {
+ val localVariableConfig = updateAuthenticatedApplicationSettingsRequestConfig(applicationSettingsProperties = applicationSettingsProperties)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation updateAuthenticatedApplicationSettings
+ *
+ * @param applicationSettingsProperties
+ * @return RequestConfig
+ */
+ fun updateAuthenticatedApplicationSettingsRequestConfig(applicationSettingsProperties: ApplicationSettingsProperties) : RequestConfig {
+ val localVariableBody = applicationSettingsProperties
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Content-Type"] = "application/json"
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.PUT,
+ path = "/v1/application/settings",
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+
+ private fun encodeURIComponent(uriComponent: kotlin.String): kotlin.String =
+ HttpUrl.Builder().scheme("http").host("localhost").addPathSegment(uriComponent).build().encodedPathSegments[0]
+}
diff --git a/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ChannelsApi.kt b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ChannelsApi.kt
new file mode 100644
index 00000000..116b0af9
--- /dev/null
+++ b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ChannelsApi.kt
@@ -0,0 +1,1658 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+import okhttp3.OkHttpClient
+import okhttp3.HttpUrl
+
+import org.openapitools.client.models.AddChannelMemberRequest
+import org.openapitools.client.models.ApiError
+import org.openapitools.client.models.ApplicationResource
+import org.openapitools.client.models.AuthenticationError
+import org.openapitools.client.models.ChannelGenericEventResource
+import org.openapitools.client.models.ChannelInviteResource
+import org.openapitools.client.models.ChannelPropertiesPatch
+import org.openapitools.client.models.ChannelResource
+import org.openapitools.client.models.ChatUserResource
+import org.openapitools.client.models.CreateChannelGenericEventResource
+import org.openapitools.client.models.CreateChannelInviteResource
+import org.openapitools.client.models.CreateChannelRequest
+import org.openapitools.client.models.CreateDelegatedReplyThreadKeystrokesResource
+import org.openapitools.client.models.CursorPagedModelMessageResource
+import org.openapitools.client.models.MessageResource
+import org.openapitools.client.models.PagedModelChannelInviteResource
+import org.openapitools.client.models.PagedModelChannelMembershipResource
+import org.openapitools.client.models.PagedModelChannelResource
+import org.openapitools.client.models.PagedModelChatUserResource
+import org.openapitools.client.models.ReplyThreadKeystrokesResource
+import org.openapitools.client.models.SendChannelMessageRequest
+import org.openapitools.client.models.SendChannelMessageRequest1
+
+import com.squareup.moshi.Json
+
+import org.openapitools.client.infrastructure.ApiClient
+import org.openapitools.client.infrastructure.ApiResponse
+import org.openapitools.client.infrastructure.ClientException
+import org.openapitools.client.infrastructure.ClientError
+import org.openapitools.client.infrastructure.ServerException
+import org.openapitools.client.infrastructure.ServerError
+import org.openapitools.client.infrastructure.MultiValueMap
+import org.openapitools.client.infrastructure.PartConfig
+import org.openapitools.client.infrastructure.RequestConfig
+import org.openapitools.client.infrastructure.RequestMethod
+import org.openapitools.client.infrastructure.ResponseType
+import org.openapitools.client.infrastructure.Success
+import org.openapitools.client.infrastructure.toMultiValue
+
+class ChannelsApi(basePath: kotlin.String = defaultBasePath, client: OkHttpClient = ApiClient.defaultClient) : ApiClient(basePath, client) {
+ companion object {
+ @JvmStatic
+ val defaultBasePath: String by lazy {
+ System.getProperties().getProperty(ApiClient.baseUrlKey, "https://api.chatkitty.com")
+ }
+ }
+
+ /**
+ * Add a channel member
+ * Makes a user a group channel member
+ * @param id Channel ID
+ * @param addChannelMemberRequest
+ * @return ChannelResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun addChannelMember(id: kotlin.Long, addChannelMemberRequest: AddChannelMemberRequest) : ChannelResource {
+ val localVarResponse = addChannelMemberWithHttpInfo(id = id, addChannelMemberRequest = addChannelMemberRequest)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChannelResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Add a channel member
+ * Makes a user a group channel member
+ * @param id Channel ID
+ * @param addChannelMemberRequest
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun addChannelMemberWithHttpInfo(id: kotlin.Long, addChannelMemberRequest: AddChannelMemberRequest) : ApiResponse {
+ val localVariableConfig = addChannelMemberRequestConfig(id = id, addChannelMemberRequest = addChannelMemberRequest)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation addChannelMember
+ *
+ * @param id Channel ID
+ * @param addChannelMemberRequest
+ * @return RequestConfig
+ */
+ fun addChannelMemberRequestConfig(id: kotlin.Long, addChannelMemberRequest: AddChannelMemberRequest) : RequestConfig {
+ val localVariableBody = addChannelMemberRequest
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Content-Type"] = "application/json"
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.POST,
+ path = "/v1/channels/{id}/members".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Add a channel moderator
+ * Makes a user a group channel moderator
+ * @param id Channel ID
+ * @param addChannelMemberRequest
+ * @return ChatUserResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun addChannelModerator(id: kotlin.Long, addChannelMemberRequest: AddChannelMemberRequest) : ChatUserResource {
+ val localVarResponse = addChannelModeratorWithHttpInfo(id = id, addChannelMemberRequest = addChannelMemberRequest)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChatUserResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Add a channel moderator
+ * Makes a user a group channel moderator
+ * @param id Channel ID
+ * @param addChannelMemberRequest
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun addChannelModeratorWithHttpInfo(id: kotlin.Long, addChannelMemberRequest: AddChannelMemberRequest) : ApiResponse {
+ val localVariableConfig = addChannelModeratorRequestConfig(id = id, addChannelMemberRequest = addChannelMemberRequest)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation addChannelModerator
+ *
+ * @param id Channel ID
+ * @param addChannelMemberRequest
+ * @return RequestConfig
+ */
+ fun addChannelModeratorRequestConfig(id: kotlin.Long, addChannelMemberRequest: AddChannelMemberRequest) : RequestConfig {
+ val localVariableBody = addChannelMemberRequest
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Content-Type"] = "application/json"
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.POST,
+ path = "/v1/channels/{id}/moderators".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Create a channel
+ * Creates a new channel or returns an equivalent existing channel
+ * @param createChannelRequest
+ * @return ChannelResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun createChannel(createChannelRequest: CreateChannelRequest) : ChannelResource {
+ val localVarResponse = createChannelWithHttpInfo(createChannelRequest = createChannelRequest)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChannelResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Create a channel
+ * Creates a new channel or returns an equivalent existing channel
+ * @param createChannelRequest
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun createChannelWithHttpInfo(createChannelRequest: CreateChannelRequest) : ApiResponse {
+ val localVariableConfig = createChannelRequestConfig(createChannelRequest = createChannelRequest)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation createChannel
+ *
+ * @param createChannelRequest
+ * @return RequestConfig
+ */
+ fun createChannelRequestConfig(createChannelRequest: CreateChannelRequest) : RequestConfig {
+ val localVariableBody = createChannelRequest
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Content-Type"] = "application/json"
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.POST,
+ path = "/v1/channels",
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Delete a channel
+ * Deletes a channel by ID
+ * @param id Channel ID
+ * @return ApplicationResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun deleteChannel(id: kotlin.Long) : ApplicationResource {
+ val localVarResponse = deleteChannelWithHttpInfo(id = id)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ApplicationResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Delete a channel
+ * Deletes a channel by ID
+ * @param id Channel ID
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun deleteChannelWithHttpInfo(id: kotlin.Long) : ApiResponse {
+ val localVariableConfig = deleteChannelRequestConfig(id = id)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation deleteChannel
+ *
+ * @param id Channel ID
+ * @return RequestConfig
+ */
+ fun deleteChannelRequestConfig(id: kotlin.Long) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.DELETE,
+ path = "/v1/channels/{id}".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * List channel invites
+ * Returns a page of invites sent to join this channel
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return PagedModelChannelInviteResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun listChannelInvites(id: kotlin.Long, page: kotlin.Int? = 0, size: kotlin.Int? = 25, sort: kotlin.collections.List? = null) : PagedModelChannelInviteResource {
+ val localVarResponse = listChannelInvitesWithHttpInfo(id = id, page = page, size = size, sort = sort)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as PagedModelChannelInviteResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * List channel invites
+ * Returns a page of invites sent to join this channel
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun listChannelInvitesWithHttpInfo(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : ApiResponse {
+ val localVariableConfig = listChannelInvitesRequestConfig(id = id, page = page, size = size, sort = sort)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation listChannelInvites
+ *
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return RequestConfig
+ */
+ fun listChannelInvitesRequestConfig(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ if (page != null) {
+ put("page", listOf(page.toString()))
+ }
+ if (size != null) {
+ put("size", listOf(size.toString()))
+ }
+ if (sort != null) {
+ put("sort", toMultiValue(sort.toList(), "multi"))
+ }
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/channels/{id}/invites".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * List a channel's members
+ * Returns a page of channel members
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return PagedModelChatUserResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun listChannelMembers(id: kotlin.Long, page: kotlin.Int? = 0, size: kotlin.Int? = 25, sort: kotlin.collections.List? = null) : PagedModelChatUserResource {
+ val localVarResponse = listChannelMembersWithHttpInfo(id = id, page = page, size = size, sort = sort)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as PagedModelChatUserResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * List a channel's members
+ * Returns a page of channel members
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun listChannelMembersWithHttpInfo(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : ApiResponse {
+ val localVariableConfig = listChannelMembersRequestConfig(id = id, page = page, size = size, sort = sort)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation listChannelMembers
+ *
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return RequestConfig
+ */
+ fun listChannelMembersRequestConfig(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ if (page != null) {
+ put("page", listOf(page.toString()))
+ }
+ if (size != null) {
+ put("size", listOf(size.toString()))
+ }
+ if (sort != null) {
+ put("sort", toMultiValue(sort.toList(), "multi"))
+ }
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/channels/{id}/members".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * List channel memberships
+ * Returns a page of channel membership info for this channel
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return PagedModelChannelMembershipResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun listChannelMemberships(id: kotlin.Long, page: kotlin.Int? = 0, size: kotlin.Int? = 25, sort: kotlin.collections.List? = null) : PagedModelChannelMembershipResource {
+ val localVarResponse = listChannelMembershipsWithHttpInfo(id = id, page = page, size = size, sort = sort)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as PagedModelChannelMembershipResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * List channel memberships
+ * Returns a page of channel membership info for this channel
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun listChannelMembershipsWithHttpInfo(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : ApiResponse {
+ val localVariableConfig = listChannelMembershipsRequestConfig(id = id, page = page, size = size, sort = sort)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation listChannelMemberships
+ *
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return RequestConfig
+ */
+ fun listChannelMembershipsRequestConfig(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ if (page != null) {
+ put("page", listOf(page.toString()))
+ }
+ if (size != null) {
+ put("size", listOf(size.toString()))
+ }
+ if (sort != null) {
+ put("sort", toMultiValue(sort.toList(), "multi"))
+ }
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/channels/{id}/memberships".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * enum for parameter relation
+ */
+ enum class RelationListChannelMessages(val value: kotlin.String) {
+ @Json(name = "SELF") sELF("SELF"),
+ @Json(name = "PREVIOUS") pREVIOUS("PREVIOUS"),
+ @Json(name = "NEXT") nEXT("NEXT")
+ }
+
+ /**
+ * List channel messages
+ * Returns a page of messages sent in this channel
+ * @param id Channel ID
+ * @param size The size of the page to be returned (optional)
+ * @param start Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages (optional)
+ * @param next Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages (optional)
+ * @param relation Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages (optional)
+ * @param username (optional)
+ * @param query (optional)
+ * @return CursorPagedModelMessageResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun listChannelMessages(id: kotlin.Long, size: kotlin.Int? = null, start: kotlin.Long? = null, next: kotlin.Long? = null, relation: RelationListChannelMessages? = null, username: kotlin.String? = null, query: kotlin.String? = null) : CursorPagedModelMessageResource {
+ val localVarResponse = listChannelMessagesWithHttpInfo(id = id, size = size, start = start, next = next, relation = relation, username = username, query = query)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as CursorPagedModelMessageResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * List channel messages
+ * Returns a page of messages sent in this channel
+ * @param id Channel ID
+ * @param size The size of the page to be returned (optional)
+ * @param start Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages (optional)
+ * @param next Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages (optional)
+ * @param relation Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages (optional)
+ * @param username (optional)
+ * @param query (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun listChannelMessagesWithHttpInfo(id: kotlin.Long, size: kotlin.Int?, start: kotlin.Long?, next: kotlin.Long?, relation: RelationListChannelMessages?, username: kotlin.String?, query: kotlin.String?) : ApiResponse {
+ val localVariableConfig = listChannelMessagesRequestConfig(id = id, size = size, start = start, next = next, relation = relation, username = username, query = query)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation listChannelMessages
+ *
+ * @param id Channel ID
+ * @param size The size of the page to be returned (optional)
+ * @param start Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages (optional)
+ * @param next Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages (optional)
+ * @param relation Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages (optional)
+ * @param username (optional)
+ * @param query (optional)
+ * @return RequestConfig
+ */
+ fun listChannelMessagesRequestConfig(id: kotlin.Long, size: kotlin.Int?, start: kotlin.Long?, next: kotlin.Long?, relation: RelationListChannelMessages?, username: kotlin.String?, query: kotlin.String?) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ if (size != null) {
+ put("size", listOf(size.toString()))
+ }
+ if (start != null) {
+ put("start", listOf(start.toString()))
+ }
+ if (next != null) {
+ put("next", listOf(next.toString()))
+ }
+ if (relation != null) {
+ put("relation", listOf(relation.value))
+ }
+ if (username != null) {
+ put("username", listOf(username.toString()))
+ }
+ if (query != null) {
+ put("query", listOf(query.toString()))
+ }
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/channels/{id}/messages".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Lists a channel's moderators
+ * Returns a page of channel moderators
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return PagedModelChatUserResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun listChannelModerators(id: kotlin.Long, page: kotlin.Int? = 0, size: kotlin.Int? = 25, sort: kotlin.collections.List? = null) : PagedModelChatUserResource {
+ val localVarResponse = listChannelModeratorsWithHttpInfo(id = id, page = page, size = size, sort = sort)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as PagedModelChatUserResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Lists a channel's moderators
+ * Returns a page of channel moderators
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun listChannelModeratorsWithHttpInfo(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : ApiResponse {
+ val localVariableConfig = listChannelModeratorsRequestConfig(id = id, page = page, size = size, sort = sort)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation listChannelModerators
+ *
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return RequestConfig
+ */
+ fun listChannelModeratorsRequestConfig(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ if (page != null) {
+ put("page", listOf(page.toString()))
+ }
+ if (size != null) {
+ put("size", listOf(size.toString()))
+ }
+ if (sort != null) {
+ put("sort", toMultiValue(sort.toList(), "multi"))
+ }
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/channels/{id}/moderators".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * List channel participants
+ * Returns a page of channel active participants: members that currently online
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return PagedModelChatUserResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun listChannelParticipants(id: kotlin.Long, page: kotlin.Int? = 0, size: kotlin.Int? = 25, sort: kotlin.collections.List? = null) : PagedModelChatUserResource {
+ val localVarResponse = listChannelParticipantsWithHttpInfo(id = id, page = page, size = size, sort = sort)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as PagedModelChatUserResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * List channel participants
+ * Returns a page of channel active participants: members that currently online
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun listChannelParticipantsWithHttpInfo(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : ApiResponse {
+ val localVariableConfig = listChannelParticipantsRequestConfig(id = id, page = page, size = size, sort = sort)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation listChannelParticipants
+ *
+ * @param id Channel ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return RequestConfig
+ */
+ fun listChannelParticipantsRequestConfig(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ if (page != null) {
+ put("page", listOf(page.toString()))
+ }
+ if (size != null) {
+ put("size", listOf(size.toString()))
+ }
+ if (sort != null) {
+ put("sort", toMultiValue(sort.toList(), "multi"))
+ }
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/channels/{id}/participants".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * enum for parameter type
+ */
+ enum class TypeListChannels(val value: kotlin.String) {
+ @Json(name = "DIRECT") dIRECT("DIRECT"),
+ @Json(name = "PUBLIC") pUBLIC("PUBLIC"),
+ @Json(name = "PRIVATE") pRIVATE("PRIVATE")
+ }
+
+ /**
+ * List channels
+ * Returns a page of channels belonging to this application
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @param type Filters by channel type (optional)
+ * @param members Filters by channel members using their usernames (optional)
+ * @param startTime Filters for channels created within a time range: start time (optional)
+ * @param endTime Filters for channels created within a time range: end time (optional)
+ * @param properties Filters by channel custom properties (optional)
+ * @return PagedModelChannelResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun listChannels(page: kotlin.Int? = 0, size: kotlin.Int? = 25, sort: kotlin.collections.List? = null, type: TypeListChannels? = null, members: kotlin.collections.Set? = null, startTime: java.time.OffsetDateTime? = null, endTime: java.time.OffsetDateTime? = null, properties: kotlin.String? = null) : PagedModelChannelResource {
+ val localVarResponse = listChannelsWithHttpInfo(page = page, size = size, sort = sort, type = type, members = members, startTime = startTime, endTime = endTime, properties = properties)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as PagedModelChannelResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * List channels
+ * Returns a page of channels belonging to this application
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @param type Filters by channel type (optional)
+ * @param members Filters by channel members using their usernames (optional)
+ * @param startTime Filters for channels created within a time range: start time (optional)
+ * @param endTime Filters for channels created within a time range: end time (optional)
+ * @param properties Filters by channel custom properties (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun listChannelsWithHttpInfo(page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?, type: TypeListChannels?, members: kotlin.collections.Set?, startTime: java.time.OffsetDateTime?, endTime: java.time.OffsetDateTime?, properties: kotlin.String?) : ApiResponse {
+ val localVariableConfig = listChannelsRequestConfig(page = page, size = size, sort = sort, type = type, members = members, startTime = startTime, endTime = endTime, properties = properties)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation listChannels
+ *
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @param type Filters by channel type (optional)
+ * @param members Filters by channel members using their usernames (optional)
+ * @param startTime Filters for channels created within a time range: start time (optional)
+ * @param endTime Filters for channels created within a time range: end time (optional)
+ * @param properties Filters by channel custom properties (optional)
+ * @return RequestConfig
+ */
+ fun listChannelsRequestConfig(page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?, type: TypeListChannels?, members: kotlin.collections.Set?, startTime: java.time.OffsetDateTime?, endTime: java.time.OffsetDateTime?, properties: kotlin.String?) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ if (page != null) {
+ put("page", listOf(page.toString()))
+ }
+ if (size != null) {
+ put("size", listOf(size.toString()))
+ }
+ if (sort != null) {
+ put("sort", toMultiValue(sort.toList(), "multi"))
+ }
+ if (type != null) {
+ put("type", listOf(type.value))
+ }
+ if (members != null) {
+ put("members", toMultiValue(members.toList(), "multi"))
+ }
+ if (startTime != null) {
+ put("startTime", listOf(parseDateToQueryString(startTime)))
+ }
+ if (endTime != null) {
+ put("endTime", listOf(parseDateToQueryString(endTime)))
+ }
+ if (properties != null) {
+ put("properties", listOf(properties.toString()))
+ }
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/channels",
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Remove a channel member
+ * Removes a member from a group channel
+ * @param id Channel ID
+ * @param userId User ID of member to be removed
+ * @return ChannelResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun removeChannelMember(id: kotlin.Long, userId: kotlin.Long) : ChannelResource {
+ val localVarResponse = removeChannelMemberWithHttpInfo(id = id, userId = userId)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChannelResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Remove a channel member
+ * Removes a member from a group channel
+ * @param id Channel ID
+ * @param userId User ID of member to be removed
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun removeChannelMemberWithHttpInfo(id: kotlin.Long, userId: kotlin.Long) : ApiResponse {
+ val localVariableConfig = removeChannelMemberRequestConfig(id = id, userId = userId)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation removeChannelMember
+ *
+ * @param id Channel ID
+ * @param userId User ID of member to be removed
+ * @return RequestConfig
+ */
+ fun removeChannelMemberRequestConfig(id: kotlin.Long, userId: kotlin.Long) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.DELETE,
+ path = "/v1/channels/{id}/members/{user_id}".replace("{"+"id"+"}", encodeURIComponent(id.toString())).replace("{"+"user_id"+"}", encodeURIComponent(userId.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Remove a channel moderator
+ * Removes a moderator from a group channel
+ * @param id Channel ID
+ * @param userId User ID of moderator to be removed
+ * @return ChannelResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun removeChannelModerator(id: kotlin.Long, userId: kotlin.Long) : ChannelResource {
+ val localVarResponse = removeChannelModeratorWithHttpInfo(id = id, userId = userId)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChannelResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Remove a channel moderator
+ * Removes a moderator from a group channel
+ * @param id Channel ID
+ * @param userId User ID of moderator to be removed
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun removeChannelModeratorWithHttpInfo(id: kotlin.Long, userId: kotlin.Long) : ApiResponse {
+ val localVariableConfig = removeChannelModeratorRequestConfig(id = id, userId = userId)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation removeChannelModerator
+ *
+ * @param id Channel ID
+ * @param userId User ID of moderator to be removed
+ * @return RequestConfig
+ */
+ fun removeChannelModeratorRequestConfig(id: kotlin.Long, userId: kotlin.Long) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.DELETE,
+ path = "/v1/channels/{id}/moderators/{user_id}".replace("{"+"id"+"}", encodeURIComponent(id.toString())).replace("{"+"user_id"+"}", encodeURIComponent(userId.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Retrieve a channel
+ * Returns a channel by ID
+ * @param id Channel ID
+ * @return ChannelResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun retrieveChannel(id: kotlin.Long) : ChannelResource {
+ val localVarResponse = retrieveChannelWithHttpInfo(id = id)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChannelResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Retrieve a channel
+ * Returns a channel by ID
+ * @param id Channel ID
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun retrieveChannelWithHttpInfo(id: kotlin.Long) : ApiResponse {
+ val localVariableConfig = retrieveChannelRequestConfig(id = id)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation retrieveChannel
+ *
+ * @param id Channel ID
+ * @return RequestConfig
+ */
+ fun retrieveChannelRequestConfig(id: kotlin.Long) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/channels/{id}".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Send a channel event
+ * Sends a custom channel event
+ * @param id Channel ID
+ * @param createChannelGenericEventResource
+ * @return ChannelGenericEventResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun sendChannelEvent(id: kotlin.Long, createChannelGenericEventResource: CreateChannelGenericEventResource) : ChannelGenericEventResource {
+ val localVarResponse = sendChannelEventWithHttpInfo(id = id, createChannelGenericEventResource = createChannelGenericEventResource)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChannelGenericEventResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Send a channel event
+ * Sends a custom channel event
+ * @param id Channel ID
+ * @param createChannelGenericEventResource
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun sendChannelEventWithHttpInfo(id: kotlin.Long, createChannelGenericEventResource: CreateChannelGenericEventResource) : ApiResponse {
+ val localVariableConfig = sendChannelEventRequestConfig(id = id, createChannelGenericEventResource = createChannelGenericEventResource)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation sendChannelEvent
+ *
+ * @param id Channel ID
+ * @param createChannelGenericEventResource
+ * @return RequestConfig
+ */
+ fun sendChannelEventRequestConfig(id: kotlin.Long, createChannelGenericEventResource: CreateChannelGenericEventResource) : RequestConfig {
+ val localVariableBody = createChannelGenericEventResource
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Content-Type"] = "application/json"
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.POST,
+ path = "/v1/channels/{id}/events".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Send a channel invite
+ * Sends a channel invite to user
+ * @param id Channel ID
+ * @param createChannelInviteResource
+ * @return ChannelInviteResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun sendChannelInvite(id: kotlin.Long, createChannelInviteResource: CreateChannelInviteResource) : ChannelInviteResource {
+ val localVarResponse = sendChannelInviteWithHttpInfo(id = id, createChannelInviteResource = createChannelInviteResource)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChannelInviteResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Send a channel invite
+ * Sends a channel invite to user
+ * @param id Channel ID
+ * @param createChannelInviteResource
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun sendChannelInviteWithHttpInfo(id: kotlin.Long, createChannelInviteResource: CreateChannelInviteResource) : ApiResponse {
+ val localVariableConfig = sendChannelInviteRequestConfig(id = id, createChannelInviteResource = createChannelInviteResource)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation sendChannelInvite
+ *
+ * @param id Channel ID
+ * @param createChannelInviteResource
+ * @return RequestConfig
+ */
+ fun sendChannelInviteRequestConfig(id: kotlin.Long, createChannelInviteResource: CreateChannelInviteResource) : RequestConfig {
+ val localVariableBody = createChannelInviteResource
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Content-Type"] = "application/json"
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.POST,
+ path = "/v1/channels/{id}/invites".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Send channel keystrokes
+ * Sends keystrokes in this channel on behalf of a user
+ * @param id
+ * @param createDelegatedReplyThreadKeystrokesResource
+ * @return ReplyThreadKeystrokesResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun sendChannelKeystrokes(id: kotlin.Long, createDelegatedReplyThreadKeystrokesResource: CreateDelegatedReplyThreadKeystrokesResource) : ReplyThreadKeystrokesResource {
+ val localVarResponse = sendChannelKeystrokesWithHttpInfo(id = id, createDelegatedReplyThreadKeystrokesResource = createDelegatedReplyThreadKeystrokesResource)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ReplyThreadKeystrokesResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Send channel keystrokes
+ * Sends keystrokes in this channel on behalf of a user
+ * @param id
+ * @param createDelegatedReplyThreadKeystrokesResource
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun sendChannelKeystrokesWithHttpInfo(id: kotlin.Long, createDelegatedReplyThreadKeystrokesResource: CreateDelegatedReplyThreadKeystrokesResource) : ApiResponse {
+ val localVariableConfig = sendChannelKeystrokesRequestConfig(id = id, createDelegatedReplyThreadKeystrokesResource = createDelegatedReplyThreadKeystrokesResource)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation sendChannelKeystrokes
+ *
+ * @param id
+ * @param createDelegatedReplyThreadKeystrokesResource
+ * @return RequestConfig
+ */
+ fun sendChannelKeystrokesRequestConfig(id: kotlin.Long, createDelegatedReplyThreadKeystrokesResource: CreateDelegatedReplyThreadKeystrokesResource) : RequestConfig {
+ val localVariableBody = createDelegatedReplyThreadKeystrokesResource
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Content-Type"] = "application/json"
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.POST,
+ path = "/v1/channels/{id}/keystrokes".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Send a channel message
+ * Sends a message in this channel as the system or on behalf of a user
+ * @param id Channel ID
+ * @param sendChannelMessageRequest
+ * @return MessageResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun sendChannelMessage(id: kotlin.Long, sendChannelMessageRequest: SendChannelMessageRequest) : MessageResource {
+ val localVarResponse = sendChannelMessageWithHttpInfo(id = id, sendChannelMessageRequest = sendChannelMessageRequest)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as MessageResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Send a channel message
+ * Sends a message in this channel as the system or on behalf of a user
+ * @param id Channel ID
+ * @param sendChannelMessageRequest
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun sendChannelMessageWithHttpInfo(id: kotlin.Long, sendChannelMessageRequest: SendChannelMessageRequest) : ApiResponse {
+ val localVariableConfig = sendChannelMessageRequestConfig(id = id, sendChannelMessageRequest = sendChannelMessageRequest)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation sendChannelMessage
+ *
+ * @param id Channel ID
+ * @param sendChannelMessageRequest
+ * @return RequestConfig
+ */
+ fun sendChannelMessageRequestConfig(id: kotlin.Long, sendChannelMessageRequest: SendChannelMessageRequest) : RequestConfig {
+ val localVariableBody = sendChannelMessageRequest
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Content-Type"] = "application/json"
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.POST,
+ path = "/v1/channels/{id}/messages".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Update a channel
+ * Updates a channel properties
+ * @param id Channel ID
+ * @param channelPropertiesPatch (optional)
+ * @return ChannelResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun updateChannel(id: kotlin.Long, channelPropertiesPatch: ChannelPropertiesPatch? = null) : ChannelResource {
+ val localVarResponse = updateChannelWithHttpInfo(id = id, channelPropertiesPatch = channelPropertiesPatch)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChannelResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Update a channel
+ * Updates a channel properties
+ * @param id Channel ID
+ * @param channelPropertiesPatch (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun updateChannelWithHttpInfo(id: kotlin.Long, channelPropertiesPatch: ChannelPropertiesPatch?) : ApiResponse {
+ val localVariableConfig = updateChannelRequestConfig(id = id, channelPropertiesPatch = channelPropertiesPatch)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation updateChannel
+ *
+ * @param id Channel ID
+ * @param channelPropertiesPatch (optional)
+ * @return RequestConfig
+ */
+ fun updateChannelRequestConfig(id: kotlin.Long, channelPropertiesPatch: ChannelPropertiesPatch?) : RequestConfig {
+ val localVariableBody = channelPropertiesPatch
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.PATCH,
+ path = "/v1/channels/{id}".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+
+ private fun encodeURIComponent(uriComponent: kotlin.String): kotlin.String =
+ HttpUrl.Builder().scheme("http").host("localhost").addPathSegment(uriComponent).build().encodedPathSegments[0]
+}
diff --git a/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ChatSessionsApi.kt b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ChatSessionsApi.kt
new file mode 100644
index 00000000..c0d8e65c
--- /dev/null
+++ b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ChatSessionsApi.kt
@@ -0,0 +1,155 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+import okhttp3.OkHttpClient
+import okhttp3.HttpUrl
+
+import org.openapitools.client.models.ApiError
+import org.openapitools.client.models.AuthenticationError
+import org.openapitools.client.models.PagedModelChatSessionResource
+
+import com.squareup.moshi.Json
+
+import org.openapitools.client.infrastructure.ApiClient
+import org.openapitools.client.infrastructure.ApiResponse
+import org.openapitools.client.infrastructure.ClientException
+import org.openapitools.client.infrastructure.ClientError
+import org.openapitools.client.infrastructure.ServerException
+import org.openapitools.client.infrastructure.ServerError
+import org.openapitools.client.infrastructure.MultiValueMap
+import org.openapitools.client.infrastructure.PartConfig
+import org.openapitools.client.infrastructure.RequestConfig
+import org.openapitools.client.infrastructure.RequestMethod
+import org.openapitools.client.infrastructure.ResponseType
+import org.openapitools.client.infrastructure.Success
+import org.openapitools.client.infrastructure.toMultiValue
+
+class ChatSessionsApi(basePath: kotlin.String = defaultBasePath, client: OkHttpClient = ApiClient.defaultClient) : ApiClient(basePath, client) {
+ companion object {
+ @JvmStatic
+ val defaultBasePath: String by lazy {
+ System.getProperties().getProperty(ApiClient.baseUrlKey, "https://api.chatkitty.com")
+ }
+ }
+
+ /**
+ * enum for parameter state
+ */
+ enum class StateListChatSessions(val value: kotlin.String) {
+ @Json(name = "ACTIVE") aCTIVE("ACTIVE"),
+ @Json(name = "ENDED") eNDED("ENDED")
+ }
+
+ /**
+ * List chat sessions
+ * Returns a page of chat sessions belonging to this application
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @param state Filters by state (optional)
+ * @return PagedModelChatSessionResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun listChatSessions(page: kotlin.Int? = 0, size: kotlin.Int? = 25, sort: kotlin.collections.List? = null, state: StateListChatSessions? = null) : PagedModelChatSessionResource {
+ val localVarResponse = listChatSessionsWithHttpInfo(page = page, size = size, sort = sort, state = state)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as PagedModelChatSessionResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * List chat sessions
+ * Returns a page of chat sessions belonging to this application
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @param state Filters by state (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun listChatSessionsWithHttpInfo(page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?, state: StateListChatSessions?) : ApiResponse {
+ val localVariableConfig = listChatSessionsRequestConfig(page = page, size = size, sort = sort, state = state)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation listChatSessions
+ *
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @param state Filters by state (optional)
+ * @return RequestConfig
+ */
+ fun listChatSessionsRequestConfig(page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?, state: StateListChatSessions?) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ if (page != null) {
+ put("page", listOf(page.toString()))
+ }
+ if (size != null) {
+ put("size", listOf(size.toString()))
+ }
+ if (sort != null) {
+ put("sort", toMultiValue(sort.toList(), "multi"))
+ }
+ if (state != null) {
+ put("state", listOf(state.value))
+ }
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/chat-sessions",
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+
+ private fun encodeURIComponent(uriComponent: kotlin.String): kotlin.String =
+ HttpUrl.Builder().scheme("http").host("localhost").addPathSegment(uriComponent).build().encodedPathSegments[0]
+}
diff --git a/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/FunctionVersionsApi.kt b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/FunctionVersionsApi.kt
new file mode 100644
index 00000000..51ab0574
--- /dev/null
+++ b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/FunctionVersionsApi.kt
@@ -0,0 +1,124 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+import okhttp3.OkHttpClient
+import okhttp3.HttpUrl
+
+import org.openapitools.client.models.ApiError
+import org.openapitools.client.models.AuthenticationError
+import org.openapitools.client.models.ChatFunctionVersionResource
+
+import com.squareup.moshi.Json
+
+import org.openapitools.client.infrastructure.ApiClient
+import org.openapitools.client.infrastructure.ApiResponse
+import org.openapitools.client.infrastructure.ClientException
+import org.openapitools.client.infrastructure.ClientError
+import org.openapitools.client.infrastructure.ServerException
+import org.openapitools.client.infrastructure.ServerError
+import org.openapitools.client.infrastructure.MultiValueMap
+import org.openapitools.client.infrastructure.PartConfig
+import org.openapitools.client.infrastructure.RequestConfig
+import org.openapitools.client.infrastructure.RequestMethod
+import org.openapitools.client.infrastructure.ResponseType
+import org.openapitools.client.infrastructure.Success
+import org.openapitools.client.infrastructure.toMultiValue
+
+class FunctionVersionsApi(basePath: kotlin.String = defaultBasePath, client: OkHttpClient = ApiClient.defaultClient) : ApiClient(basePath, client) {
+ companion object {
+ @JvmStatic
+ val defaultBasePath: String by lazy {
+ System.getProperties().getProperty(ApiClient.baseUrlKey, "https://api.chatkitty.com")
+ }
+ }
+
+ /**
+ * Retrieve a chat function version
+ * Returns a chat function version by ID
+ * @param id Chat function version ID
+ * @return ChatFunctionVersionResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun retrieveFunctionVersion(id: kotlin.Long) : ChatFunctionVersionResource {
+ val localVarResponse = retrieveFunctionVersionWithHttpInfo(id = id)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChatFunctionVersionResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Retrieve a chat function version
+ * Returns a chat function version by ID
+ * @param id Chat function version ID
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun retrieveFunctionVersionWithHttpInfo(id: kotlin.Long) : ApiResponse {
+ val localVariableConfig = retrieveFunctionVersionRequestConfig(id = id)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation retrieveFunctionVersion
+ *
+ * @param id Chat function version ID
+ * @return RequestConfig
+ */
+ fun retrieveFunctionVersionRequestConfig(id: kotlin.Long) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/function-versions/{id}".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+
+ private fun encodeURIComponent(uriComponent: kotlin.String): kotlin.String =
+ HttpUrl.Builder().scheme("http").host("localhost").addPathSegment(uriComponent).build().encodedPathSegments[0]
+}
diff --git a/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/FunctionsApi.kt b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/FunctionsApi.kt
new file mode 100644
index 00000000..a7d50051
--- /dev/null
+++ b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/FunctionsApi.kt
@@ -0,0 +1,456 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+import okhttp3.OkHttpClient
+import okhttp3.HttpUrl
+
+import org.openapitools.client.models.ApiError
+import org.openapitools.client.models.AuthenticationError
+import org.openapitools.client.models.ChatFunctionResource
+import org.openapitools.client.models.ChatFunctionVersionResource
+import org.openapitools.client.models.CreateChatFunctionVersionResource
+import org.openapitools.client.models.PagedModelChatFunctionInvocationResource
+import org.openapitools.client.models.PagedModelChatFunctionVersionResource
+
+import com.squareup.moshi.Json
+
+import org.openapitools.client.infrastructure.ApiClient
+import org.openapitools.client.infrastructure.ApiResponse
+import org.openapitools.client.infrastructure.ClientException
+import org.openapitools.client.infrastructure.ClientError
+import org.openapitools.client.infrastructure.ServerException
+import org.openapitools.client.infrastructure.ServerError
+import org.openapitools.client.infrastructure.MultiValueMap
+import org.openapitools.client.infrastructure.PartConfig
+import org.openapitools.client.infrastructure.RequestConfig
+import org.openapitools.client.infrastructure.RequestMethod
+import org.openapitools.client.infrastructure.ResponseType
+import org.openapitools.client.infrastructure.Success
+import org.openapitools.client.infrastructure.toMultiValue
+
+class FunctionsApi(basePath: kotlin.String = defaultBasePath, client: OkHttpClient = ApiClient.defaultClient) : ApiClient(basePath, client) {
+ companion object {
+ @JvmStatic
+ val defaultBasePath: String by lazy {
+ System.getProperties().getProperty(ApiClient.baseUrlKey, "https://api.chatkitty.com")
+ }
+ }
+
+ /**
+ * Create a chat function version
+ * Creates a new version of this chat function
+ * @param id Chat function ID
+ * @param createChatFunctionVersionResource
+ * @return ChatFunctionVersionResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun createFunctionVersion(id: kotlin.Long, createChatFunctionVersionResource: CreateChatFunctionVersionResource) : ChatFunctionVersionResource {
+ val localVarResponse = createFunctionVersionWithHttpInfo(id = id, createChatFunctionVersionResource = createChatFunctionVersionResource)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChatFunctionVersionResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Create a chat function version
+ * Creates a new version of this chat function
+ * @param id Chat function ID
+ * @param createChatFunctionVersionResource
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun createFunctionVersionWithHttpInfo(id: kotlin.Long, createChatFunctionVersionResource: CreateChatFunctionVersionResource) : ApiResponse {
+ val localVariableConfig = createFunctionVersionRequestConfig(id = id, createChatFunctionVersionResource = createChatFunctionVersionResource)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation createFunctionVersion
+ *
+ * @param id Chat function ID
+ * @param createChatFunctionVersionResource
+ * @return RequestConfig
+ */
+ fun createFunctionVersionRequestConfig(id: kotlin.Long, createChatFunctionVersionResource: CreateChatFunctionVersionResource) : RequestConfig {
+ val localVariableBody = createChatFunctionVersionResource
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Content-Type"] = "application/json"
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.POST,
+ path = "/v1/functions/{id}/versions".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * List chat function invocations
+ * Returns a page of invocations of this chat function. A log of previous runs of the function
+ * @param id Chat function ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return PagedModelChatFunctionInvocationResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun listFunctionInvocations(id: kotlin.Long, page: kotlin.Int? = 0, size: kotlin.Int? = 25, sort: kotlin.collections.List? = null) : PagedModelChatFunctionInvocationResource {
+ val localVarResponse = listFunctionInvocationsWithHttpInfo(id = id, page = page, size = size, sort = sort)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as PagedModelChatFunctionInvocationResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * List chat function invocations
+ * Returns a page of invocations of this chat function. A log of previous runs of the function
+ * @param id Chat function ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun listFunctionInvocationsWithHttpInfo(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : ApiResponse {
+ val localVariableConfig = listFunctionInvocationsRequestConfig(id = id, page = page, size = size, sort = sort)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation listFunctionInvocations
+ *
+ * @param id Chat function ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return RequestConfig
+ */
+ fun listFunctionInvocationsRequestConfig(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ if (page != null) {
+ put("page", listOf(page.toString()))
+ }
+ if (size != null) {
+ put("size", listOf(size.toString()))
+ }
+ if (sort != null) {
+ put("sort", toMultiValue(sort.toList(), "multi"))
+ }
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/functions/{id}/invocations".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * List chat function versions
+ * Returns a page of versions of this chat function
+ * @param id Chat function ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return PagedModelChatFunctionVersionResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun listFunctionVersions(id: kotlin.Long, page: kotlin.Int? = 0, size: kotlin.Int? = 25, sort: kotlin.collections.List? = null) : PagedModelChatFunctionVersionResource {
+ val localVarResponse = listFunctionVersionsWithHttpInfo(id = id, page = page, size = size, sort = sort)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as PagedModelChatFunctionVersionResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * List chat function versions
+ * Returns a page of versions of this chat function
+ * @param id Chat function ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun listFunctionVersionsWithHttpInfo(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : ApiResponse {
+ val localVariableConfig = listFunctionVersionsRequestConfig(id = id, page = page, size = size, sort = sort)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation listFunctionVersions
+ *
+ * @param id Chat function ID
+ * @param page Zero-based page index (0..N) (optional, default to 0)
+ * @param size The size of the page to be returned (optional, default to 25)
+ * @param sort Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional)
+ * @return RequestConfig
+ */
+ fun listFunctionVersionsRequestConfig(id: kotlin.Long, page: kotlin.Int?, size: kotlin.Int?, sort: kotlin.collections.List?) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ if (page != null) {
+ put("page", listOf(page.toString()))
+ }
+ if (size != null) {
+ put("size", listOf(size.toString()))
+ }
+ if (sort != null) {
+ put("sort", toMultiValue(sort.toList(), "multi"))
+ }
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/functions/{id}/versions".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Retrieve a chat function
+ * Returns a chat function by ID
+ * @param id Chat function ID
+ * @return ChatFunctionResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun retrieveFunction(id: kotlin.Long) : ChatFunctionResource {
+ val localVarResponse = retrieveFunctionWithHttpInfo(id = id)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChatFunctionResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Retrieve a chat function
+ * Returns a chat function by ID
+ * @param id Chat function ID
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun retrieveFunctionWithHttpInfo(id: kotlin.Long) : ApiResponse {
+ val localVariableConfig = retrieveFunctionRequestConfig(id = id)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation retrieveFunction
+ *
+ * @param id Chat function ID
+ * @return RequestConfig
+ */
+ fun retrieveFunctionRequestConfig(id: kotlin.Long) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/functions/{id}".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+ /**
+ * Retrieve chat function current version
+ * Returns the version of this chat function currently deployed
+ * @param id Chat function ID
+ * @return ChatFunctionVersionResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun retrieveFunctionCurrentVersion(id: kotlin.Long) : ChatFunctionVersionResource {
+ val localVarResponse = retrieveFunctionCurrentVersionWithHttpInfo(id = id)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ChatFunctionVersionResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Retrieve chat function current version
+ * Returns the version of this chat function currently deployed
+ * @param id Chat function ID
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun retrieveFunctionCurrentVersionWithHttpInfo(id: kotlin.Long) : ApiResponse {
+ val localVariableConfig = retrieveFunctionCurrentVersionRequestConfig(id = id)
+
+ return request(
+ localVariableConfig
+ )
+ }
+
+ /**
+ * To obtain the request config of the operation retrieveFunctionCurrentVersion
+ *
+ * @param id Chat function ID
+ * @return RequestConfig
+ */
+ fun retrieveFunctionCurrentVersionRequestConfig(id: kotlin.Long) : RequestConfig {
+ val localVariableBody = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ localVariableHeaders["Accept"] = "application/json, application/vnd.hal+json, application/hal+json"
+
+ return RequestConfig(
+ method = RequestMethod.GET,
+ path = "/v1/functions/{id}/current-version".replace("{"+"id"+"}", encodeURIComponent(id.toString())),
+ query = localVariableQuery,
+ headers = localVariableHeaders,
+ requiresAuthentication = true,
+ body = localVariableBody
+ )
+ }
+
+
+ private fun encodeURIComponent(uriComponent: kotlin.String): kotlin.String =
+ HttpUrl.Builder().scheme("http").host("localhost").addPathSegment(uriComponent).build().encodedPathSegments[0]
+}
diff --git a/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ImportsApi.kt b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ImportsApi.kt
new file mode 100644
index 00000000..2bcfe008
--- /dev/null
+++ b/examples/android-example/models/src/main/kotlin/org/openapitools/client/apis/ImportsApi.kt
@@ -0,0 +1,344 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+import okhttp3.OkHttpClient
+import okhttp3.HttpUrl
+
+import org.openapitools.client.models.ApiError
+import org.openapitools.client.models.ApplicationJobResource
+import org.openapitools.client.models.AuthenticationError
+
+import com.squareup.moshi.Json
+
+import org.openapitools.client.infrastructure.ApiClient
+import org.openapitools.client.infrastructure.ApiResponse
+import org.openapitools.client.infrastructure.ClientException
+import org.openapitools.client.infrastructure.ClientError
+import org.openapitools.client.infrastructure.ServerException
+import org.openapitools.client.infrastructure.ServerError
+import org.openapitools.client.infrastructure.MultiValueMap
+import org.openapitools.client.infrastructure.PartConfig
+import org.openapitools.client.infrastructure.RequestConfig
+import org.openapitools.client.infrastructure.RequestMethod
+import org.openapitools.client.infrastructure.ResponseType
+import org.openapitools.client.infrastructure.Success
+import org.openapitools.client.infrastructure.toMultiValue
+
+class ImportsApi(basePath: kotlin.String = defaultBasePath, client: OkHttpClient = ApiClient.defaultClient) : ApiClient(basePath, client) {
+ companion object {
+ @JvmStatic
+ val defaultBasePath: String by lazy {
+ System.getProperties().getProperty(ApiClient.baseUrlKey, "https://api.chatkitty.com")
+ }
+ }
+
+ /**
+ * Import channel members
+ * Batch imports channel members from a JSON array file
+ * @param id
+ * @param file JSON array file with user references to be added as members
+ * @return ApplicationJobResource
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ * @throws UnsupportedOperationException If the API returns an informational or redirection response
+ * @throws ClientException If the API returns a client error response
+ * @throws ServerException If the API returns a server error response
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun importChannelMembers(id: kotlin.Long, file: java.io.File) : ApplicationJobResource {
+ val localVarResponse = importChannelMembersWithHttpInfo(id = id, file = file)
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ApplicationJobResource
+ ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+ ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+ ResponseType.ClientError -> {
+ val localVarError = localVarResponse as ClientError<*>
+ throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+ }
+ ResponseType.ServerError -> {
+ val localVarError = localVarResponse as ServerError<*>
+ throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()} ${localVarError.body}", localVarError.statusCode, localVarResponse)
+ }
+ }
+ }
+
+ /**
+ * Import channel members
+ * Batch imports channel members from a JSON array file
+ * @param id
+ * @param file JSON array file with user references to be added as members
+ * @return ApiResponse
+ * @throws IllegalStateException If the request is not correctly configured
+ * @throws IOException Rethrows the OkHttp execute method exception
+ */
+ @Suppress("UNCHECKED_CAST")
+ @Throws(IllegalStateException::class, IOException::class)
+ fun importChannelMembersWithHttpInfo(id: kotlin.Long, file: java.io.File) : ApiResponse {
+ val localVariableConfig = importChannelMembersRequestConfig(id = id, file = file)
+
+ return request