package com.notifyhub.viewer.data.remote import com.google.gson.annotations.SerializedName data class LoginRequest( val login: String, val password: String, val company_number: String, val device_name: String, ) data class LoginResponse( val token: String? = null, val profile: ProfileResponse? = null, val message: String? = null, val code: String? = null, @SerializedName("challenge_id") val challengeId: String? = null, ) data class TwoFactorVerifyRequest( @SerializedName("challenge_id") val challengeId: String, val code: String, @SerializedName("device_name") val deviceName: String, ) data class TwoFactorResendRequest( @SerializedName("challenge_id") val challengeId: String, ) data class PushTokenRequest( val platform: String, val token: String, ) data class ProfileResponse( val user: UserSummary, val company: CompanySummary?, val permissions: Permissions, val branding: BrandingPayload?, ) data class UserSummary( val id: Int, val name: String, val email: String, val username: String?, val role: String, @SerializedName("department_id") val departmentId: Int?, ) data class CompanySummary( val id: Int, val name: String, val slug: String, @SerializedName("company_number") val companyNumber: String? = null, val status: String?, val subscription: SubscriptionSummary? = null, ) data class SubscriptionSummary( @SerializedName("plan_name") val planName: String? = null, @SerializedName("plan_slug") val planSlug: String? = null, @SerializedName("is_perpetual") val isPerpetual: Boolean = false, @SerializedName("max_devices") val maxDevices: Int? = null, @SerializedName("max_users") val maxUsers: Int? = null, @SerializedName("max_keywords") val maxKeywords: Int? = null, @SerializedName("data_retention_days") val dataRetentionDays: Int? = null, @SerializedName("includes_branding") val includesBranding: Boolean = false, @SerializedName("expires_at") val expiresAt: String? = null, ) data class Permissions( val pages: List = emptyList(), val actions: List = emptyList(), ) data class BrandingPayload( val enabled: Boolean = false, @SerializedName("app_name") val appName: String?, @SerializedName("logo_url") val logoUrl: String?, ) data class StatsResponse( @SerializedName("total_messages") val totalMessages: Int = 0, @SerializedName("today_messages") val todayMessages: Int = 0, @SerializedName("failed_syncs") val failedSyncs: Int = 0, @SerializedName("active_devices") val activeDevices: Int = 0, @SerializedName("unread_alerts") val unreadAlerts: Int = 0, ) data class MessageRow( val id: Int, val sender: String?, @SerializedName("message_type") val messageType: String?, @SerializedName("received_at") val receivedAt: String?, @SerializedName("sync_status") val syncStatus: String?, val device: DeviceSummary?, ) data class DeviceSummary( val id: Int, @SerializedName("device_uid") val deviceUid: String?, @SerializedName("device_name") val deviceName: String?, val user: UserDeviceSummary?, ) data class UserDeviceSummary( val id: Int, val name: String?, ) data class MessageDetail( val id: Int, val sender: String?, @SerializedName("message_type") val messageType: String?, @SerializedName("received_at") val receivedAt: String?, @SerializedName("sync_status") val syncStatus: String?, val message: String?, @SerializedName("message_redacted") val messageRedacted: Boolean = false, val device: DeviceSummary?, ) data class PaginatedMessages( val data: List = emptyList(), @SerializedName("current_page") val currentPage: Int = 1, @SerializedName("last_page") val lastPage: Int = 1, @SerializedName("total") val total: Int = 0, ) data class AlertItem( val id: Int, val type: String?, @SerializedName("is_read") val isRead: Boolean = false, @SerializedName("message_id") val messageId: Int?, @SerializedName("expires_at") val expiresAt: String?, val message: MessageRow?, ) data class ApiErrorBody( val message: String? = null, val code: String? = null, )