package ru.yandex.galois.clients.yt.model

import ru.yandex.inside.yt.kosher.impl.ytree.`object`.FieldsBindingStrategy
import ru.yandex.inside.yt.kosher.impl.ytree.`object`.NullSerializationStrategy
import ru.yandex.inside.yt.kosher.impl.ytree.`object`.annotation.YTreeField
import ru.yandex.inside.yt.kosher.impl.ytree.`object`.annotation.YTreeObject
import ru.yandex.misc.lang.number.UnsignedLong

@YTreeObject(nullSerializationStrategy = NullSerializationStrategy.SERIALIZE_NULL_TO_EMPTY,
    bindingStrategy = FieldsBindingStrategy.ANNOTATED_ONLY)
data class YtStaffGroupMembership(
    @YTreeField(key = "id")
    val id: Long,
    @YTreeField(key = "group_id")
    val groupId: Long,
    @YTreeField(key = "group_is_deleted")
    val groupDeleted: Boolean,
    @YTreeField(key = "group_url")
    val groupUrl: String,
    @YTreeField(key = "group_type")
    val groupType: String,
    @YTreeField(key = "group_role_scope")
    val groupRoleScope: String?,
    @YTreeField(key = "group_service_id")
    val groupServiceId: Long?,
    @YTreeField(key = "group_parent_id")
    val groupParentId: Long?,
    @YTreeField(key = "group_parent_is_deleted")
    val groupParentDeleted: Boolean?,
    @YTreeField(key = "group_parent_url")
    val groupParentUrl: String?,
    @YTreeField(key = "group_parent_type")
    val groupParentType: String?,
    @YTreeField(key = "group_parent_role_scope")
    val groupParentRoleScope: String?,
    @YTreeField(key = "group_parent_service_id")
    val groupParentServiceId: Long?,
    @YTreeField(key = "modified_at")
    val modifiedAt: UnsignedLong,
    @YTreeField(key = "person_id")
    val personId: Long,
    @YTreeField(key = "person_is_dismissed")
    val personDismissed: Boolean,
    @YTreeField(key = "person_login")
    val personLogin: String,
    @YTreeField(key = "person_is_deleted")
    val personDeleted: Boolean,
    @YTreeField(key = "joined_at")
    val joinedAt: UnsignedLong
)
