package models import ( "time" "github.com/google/uuid" ) // AgentUpdatePackage represents a signed agent binary package type AgentUpdatePackage struct { ID uuid.UUID `json:"id" db:"id"` Version string `json:"version" db:"version"` Platform string `json:"platform" db:"platform"` Architecture string `json:"architecture" db:"architecture"` BinaryPath string `json:"binary_path" db:"binary_path"` Signature string `json:"signature" db:"signature"` Checksum string `json:"checksum" db:"checksum"` FileSize int64 `json:"file_size" db:"file_size"` CreatedAt time.Time `json:"created_at" db:"created_at"` CreatedBy string `json:"created_by" db:"created_by"` IsActive bool `json:"is_active" db:"is_active"` } // AgentUpdateRequest represents a request to update an agent type AgentUpdateRequest struct { AgentID uuid.UUID `json:"agent_id" binding:"required"` Version string `json:"version" binding:"required"` Platform string `json:"platform" binding:"required"` Scheduled *string `json:"scheduled_at,omitempty"` } // BulkAgentUpdateRequest represents a bulk update request type BulkAgentUpdateRequest struct { AgentIDs []uuid.UUID `json:"agent_ids" binding:"required"` Version string `json:"version" binding:"required"` Platform string `json:"platform" binding:"required"` Scheduled *string `json:"scheduled_at,omitempty"` } // AgentUpdateResponse represents the response for an update request type AgentUpdateResponse struct { Message string `json:"message"` UpdateID string `json:"update_id,omitempty"` DownloadURL string `json:"download_url,omitempty"` Signature string `json:"signature,omitempty"` Checksum string `json:"checksum,omitempty"` FileSize int64 `json:"file_size,omitempty"` EstimatedTime int `json:"estimated_time_seconds,omitempty"` } // SignatureVerificationRequest represents a request to verify an agent's binary signature type SignatureVerificationRequest struct { AgentID uuid.UUID `json:"agent_id" binding:"required"` BinaryPath string `json:"binary_path" binding:"required"` MachineID string `json:"machine_id" binding:"required"` PublicKey string `json:"public_key" binding:"required"` Signature string `json:"signature" binding:"required"` } // SignatureVerificationResponse represents the response for signature verification type SignatureVerificationResponse struct { Valid bool `json:"valid"` AgentID string `json:"agent_id"` MachineID string `json:"machine_id"` Fingerprint string `json:"fingerprint"` Message string `json:"message"` }