67 lines
2.1 KiB
Go
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"`
|
|
}
|