I faced a similar issue when (de)serializing to JSON with RuntimeTypeAdapterFactory. Maybe an interface will suit your purposes.
interface BasicData {
val id: String
}
data class AnotherDataClass(
override val id: String,
...
} : BasicData