package com.parentalmonitor.child.models import com.google.gson.annotations.SerializedName // Standard API Response data class ApiResponse( val success: Boolean, val message: String, val data: T? ) // Auth data class LoginRequest(val email: String, val password: String) data class LoginData( @SerializedName("access_token") val accessToken: String, @SerializedName("refresh_token") val refreshToken: String, val user: UserData ) data class UserData( val id: Int, val name: String, val email: String ) // Pair Code data class VerifyPairCodeRequest( @SerializedName("pair_code") val pairCode: String, @SerializedName("device_name") val deviceName: String, @SerializedName("device_model") val deviceModel: String, @SerializedName("android_version") val androidVersion: String, @SerializedName("app_version") val appVersion: String ) data class PairCodeData( @SerializedName("device_id") val deviceId: Int, @SerializedName("approval_id") val approvalId: Int, val status: String ) // Approval Check data class ApprovalCheckData( @SerializedName("device_status") val deviceStatus: String, @SerializedName("approval_status") val approvalStatus: String, @SerializedName("is_approved") val isApproved: Boolean ) // Sync data class SyncRequest( @SerializedName("battery_level") val batteryLevel: Int, @SerializedName("app_version") val appVersion: String, val location: LocationData? = null, @SerializedName("app_usage") val appUsage: List? = null, val notifications: List? = null, val permissions: PermissionsData? = null ) data class LocationData( val latitude: Double, val longitude: Double, val accuracy: Float, val address: String? = null ) data class AppUsageData( @SerializedName("package_name") val packageName: String, @SerializedName("app_name") val appName: String, @SerializedName("usage_duration") val usageDuration: Long, @SerializedName("last_used") val lastUsed: String ) data class NotificationData( @SerializedName("package_name") val packageName: String, @SerializedName("app_name") val appName: String, val title: String, val content: String, @SerializedName("posted_at") val postedAt: String ) data class PermissionsData( @SerializedName("accessibility_service") val accessibilityService: Boolean = false, @SerializedName("usage_stats_access") val usageStatsAccess: Boolean = false, @SerializedName("notification_access") val notificationAccess: Boolean = false, @SerializedName("device_admin") val deviceAdmin: Boolean = false, @SerializedName("location_permission") val locationPermission: Boolean = false, @SerializedName("overlay_permission") val overlayPermission: Boolean = false, @SerializedName("battery_optimization") val batteryOptimization: Boolean = false, @SerializedName("background_activity") val backgroundActivity: Boolean = false, @SerializedName("auto_start") val autoStart: Boolean = false, @SerializedName("storage_permission") val storagePermission: Boolean = false ) data class SyncResponseData( val commands: List? ) data class RemoteCommand( val id: Int, @SerializedName("command_type") val commandType: String, @SerializedName("command_data") val commandData: String?, val status: String ) // Command Status Update data class CommandStatusUpdate( @SerializedName("command_id") val commandId: Int, val status: String, val result: String? = null ) // Refresh Token data class RefreshTokenRequest( @SerializedName("refresh_token") val refreshToken: String ) data class RefreshTokenData( @SerializedName("access_token") val accessToken: String, @SerializedName("refresh_token") val refreshToken: String )