package domain import ( "encoding/json" "time" ) type Template struct { ID int64 `json:"id"` Name string `json:"name"` Description string `json:"description"` Locale string `json:"locale"` ThumbnailURL string `json:"thumbnailUrl"` TemplatePreviewURL string `json:"templatePreviewUrl"` Type string `json:"type"` PaletteReady bool `json:"paletteReady"` RawJSON json.RawMessage `json:"rawTemplateJson"` IsAITemplate bool `json:"isAiTemplate"` IsOnboarded bool `json:"isOnboarded"` ManifestStatus string `json:"manifestStatus"` LastDiscoveredAt *time.Time `json:"lastDiscoveredAt,omitempty"` } type TemplateManifest struct { ID string `json:"id"` TemplateID int64 `json:"templateId"` Version int `json:"version"` Source string `json:"source"` LanguageUsedDiscovery string `json:"languageUsedForDiscovery"` DiscoveryPayloadJSON json.RawMessage `json:"discoveryPayloadJson"` DiscoveryResponseJSON json.RawMessage `json:"discoveryResponseJson"` FlattenedManifestJSON json.RawMessage `json:"flattenedManifestJson"` IsActive bool `json:"isActive"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` } type TemplateField struct { ID string `json:"id"` TemplateID int64 `json:"templateId"` ManifestID string `json:"manifestId"` Section string `json:"section"` WebsiteSection string `json:"websiteSection"` KeyName string `json:"keyName"` Path string `json:"path"` FieldKind string `json:"fieldKind"` SampleValue string `json:"sampleValue"` IsEnabled bool `json:"isEnabled"` IsRequiredByUs bool `json:"isRequiredByUs"` DisplayLabel string `json:"displayLabel"` DisplayOrder int `json:"displayOrder"` Notes string `json:"notes"` } type SiteBuild struct { ID string `json:"id"` TemplateID int64 `json:"templateId"` ManifestID string `json:"manifestId"` RequestName string `json:"requestName"` GlobalDataJSON json.RawMessage `json:"globalDataJson"` AIDataJSON json.RawMessage `json:"aiDataJson"` FinalSitesPayload json.RawMessage `json:"finalSitesPayloadJson"` QCJobID *int64 `json:"qcJobId,omitempty"` QCSiteID *int64 `json:"qcSiteId,omitempty"` QCStatus string `json:"qcStatus"` QCPreviewURL string `json:"qcPreviewUrl"` QCEditorURL string `json:"qcEditorUrl"` QCResultJSON json.RawMessage `json:"qcResultJson"` QCErrorJSON json.RawMessage `json:"qcErrorJson"` StartedAt *time.Time `json:"startedAt,omitempty"` FinishedAt *time.Time `json:"finishedAt,omitempty"` } type BuildDraft struct { ID string `json:"id"` TemplateID int64 `json:"templateId"` ManifestID string `json:"manifestId"` Source string `json:"source"` RequestName string `json:"requestName"` GlobalDataJSON json.RawMessage `json:"globalDataJson"` FieldValuesJSON json.RawMessage `json:"fieldValuesJson"` Status string `json:"status"` Notes string `json:"notes"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` } type AppSettings struct { QCBaseURL string `json:"qcBaseUrl"` QCBearerTokenEncrypted string `json:"qcBearerTokenEncrypted"` LanguageOutputMode string `json:"languageOutputMode"` JobPollIntervalSeconds int `json:"jobPollIntervalSeconds"` JobPollTimeoutSeconds int `json:"jobPollTimeoutSeconds"` }