Files
lgpo-server/internal/model/model.go
groot d191b871de
All checks were successful
release-tag / release-image (push) Successful in 1m37s
init
2026-08-05 10:46:09 +02:00

67 lines
2.1 KiB
Go

package model
import "time"
type PolicyVersion struct {
Version string `json:"version"`
CreatedAt time.Time `json:"created_at"`
Note string `json:"note,omitempty"`
ArtifactPath string `json:"artifact_path"`
ArtifactHash string `json:"artifact_sha256"`
SemanticHash string `json:"semantic_sha256"`
Size int64 `json:"size"`
FileCount int `json:"file_count"`
PolicyFiles int `json:"policy_file_count"`
}
type Policy struct {
Name string `json:"name"`
Versions []PolicyVersion `json:"versions"`
}
type ProfilePolicy struct {
Policy string `json:"policy"`
Version string `json:"version"` // "latest" or an exact version
}
type Profile struct {
Name string `json:"name"`
Policies []ProfilePolicy `json:"policies"`
UpdatedAt time.Time `json:"updated_at"`
}
type ResolvedPolicy struct {
Name string `json:"name"`
Version string `json:"version"`
SHA256 string `json:"sha256"`
SemanticHash string `json:"semantic_sha256"`
Size int64 `json:"size"`
DownloadURL string `json:"download_url"`
}
type Manifest struct {
Profile string `json:"profile"`
ProfileUpdated time.Time `json:"profile_updated_at"`
Generation string `json:"generation"`
Policies []ResolvedPolicy `json:"policies"`
}
type ClientReport struct {
ClientID string `json:"client_id"`
Hostname string `json:"hostname,omitempty"`
Profile string `json:"profile"`
Generation string `json:"generation,omitempty"`
Success bool `json:"success"`
Message string `json:"message,omitempty"`
AgentVersion string `json:"agent_version,omitempty"`
ReportedAt time.Time `json:"reported_at"`
AppliedAt time.Time `json:"applied_at,omitempty"`
OperatingSystem string `json:"operating_system,omitempty"`
}
type Catalog struct {
Policies map[string]*Policy `json:"policies"`
Profiles map[string]*Profile `json:"profiles"`
Clients map[string]ClientReport `json:"clients"`
}