network/preseem/types.go
2026-07-19 14:42:02 -05:00

189 lines
6.2 KiB
Go

package main
// Types transcribed from preseem/preseem.yaml (components.schemas).
// Only fields useful for read flows are modeled; the raw JSON body is
// always available via --json passthrough for anything not listed here.
type Paginator struct {
Page int `json:"page"`
PageCount int `json:"page_count"`
Limit int `json:"limit"`
TotalCount int `json:"total_count"`
}
type AccessPoint struct {
ID string `json:"id"`
Name string `json:"name"`
Tower string `json:"tower"`
IPAddress string `json:"ip_address"`
}
type AccessPointList struct {
Data []AccessPoint `json:"data"`
Paginator Paginator `json:"paginator"`
}
type APShaperRate struct {
UpSpeed int64 `json:"up_speed,omitempty"`
DownSpeed int64 `json:"down_speed,omitempty"`
Activate bool `json:"activate,omitempty"`
}
type SNMP3 struct {
SecurityName string `json:"security_name,omitempty"`
AuthKey string `json:"auth_key,omitempty"`
AuthProtocol string `json:"auth_protocol,omitempty"`
PrivKey string `json:"priv_key,omitempty"`
PrivProtocol string `json:"priv_protocol,omitempty"`
}
type AccessPointConfig struct {
ShaperRate *APShaperRate `json:"shaper_rate,omitempty"`
SNMPCommunity string `json:"snmp_community,omitempty"`
SNMP3 *SNMP3 `json:"snmp3,omitempty"`
}
// Score endpoints are field-heavy and don't paginate per spec — they
// return a top-level array.
// NB: the spec types numerics as `integer` but the live API returns
// floats for latency/throughput/scores. Use float64 throughout so
// decoding never breaks; printers round for display.
type AccessPointScore struct {
Name string `json:"name"`
Status string `json:"status"`
SiteName string `json:"site_name"`
ManufacturerName string `json:"manufacturer_name"`
ModelName string `json:"model_name"`
ManagementIP string `json:"management_ip"`
SystemMacAddress string `json:"system_mac_address"`
Connections float64 `json:"connections"`
Latency float64 `json:"latency"`
ThroughputTX float64 `json:"throughput_tx"`
ThroughputRX float64 `json:"throughput_rx"`
Frequency float64 `json:"frequency"`
ChannelWidth float64 `json:"channel_width"`
Firmware string `json:"firmware"`
RFScore float64 `json:"rf_score"`
RFScoreSeverity any `json:"rf_score_severity"`
APHealthScore float64 `json:"ap_health_score"`
APHealthSeverity string `json:"ap_health_score_severity"`
SubscriberCap float64 `json:"subscriber_capacity"`
SubscriberCapSev string `json:"subscriber_capacity_severity"`
SliceCondition string `json:"slice_condition"`
LatencySeverity string `json:"latency_severity"`
ModelSupportLvl string `json:"model_support_level"`
AirtimeRemTX float64 `json:"airtime_remaining_tx"`
AirtimeRemSevTX string `json:"airtime_remaining_severity_tx"`
RFScoreTrend string `json:"rf_score_trend"`
APHealthTrend string `json:"ap_health_score_trend"`
SubscriberCapTrnd string `json:"subscriber_capacity_trend"`
SerialNumber string `json:"serial_number"`
ElementID int `json:"element_id"`
}
type CPERadioScore struct {
Name string `json:"name"`
Status string `json:"status"`
APName string `json:"ap_name"`
APSiteName string `json:"ap_site_name"`
ManufacturerName string `json:"manufacturer_name"`
ModelName string `json:"model_name"`
ManagementIP string `json:"management_ip"`
SystemMacAddress string `json:"system_mac_address"`
Firmware string `json:"firmware"`
Frequency float64 `json:"frequency"`
ChannelWidth float64 `json:"channel_width"`
RFScore float64 `json:"rf_score"`
RFScoreSeverity any `json:"rf_score_severity"`
RFScoreTrend string `json:"rf_score_trend"`
BusinessValue float64 `json:"business_value_score"`
BusinessValueSev string `json:"business_value_score_severity"`
SliceCondition string `json:"slice_condition"`
SerialNumber string `json:"serial_number"`
ElementID int `json:"element_id"`
APID int `json:"ap_id"`
}
type Account struct {
ID string `json:"id"`
Name string `json:"name"`
}
type AccountList struct {
Data []Account `json:"data"`
Paginator Paginator `json:"paginator"`
}
type Package struct {
ID string `json:"id"`
Name string `json:"name"`
UpSpeed int64 `json:"up_speed,omitempty"`
DownSpeed int64 `json:"down_speed,omitempty"`
}
type PackageList struct {
Data []Package `json:"data"`
Paginator Paginator `json:"paginator"`
}
type ServiceAttachment struct {
CPEMac string `json:"cpe_mac,omitempty"`
NetworkPrefixes []string `json:"network_prefixes,omitempty"`
CPESerial string `json:"cpe_serial,omitempty"`
CPEIMSI string `json:"cpe_imsi,omitempty"`
Username string `json:"username,omitempty"`
}
type Service struct {
ID string `json:"id"`
Attachments []ServiceAttachment `json:"attachments,omitempty"`
UpSpeed int64 `json:"up_speed,omitempty"`
DownSpeed int64 `json:"down_speed,omitempty"`
Account string `json:"account"`
Package string `json:"package,omitempty"`
ParentDeviceID string `json:"parent_device_id,omitempty"`
}
type ServiceList struct {
Data []Service `json:"data"`
Paginator Paginator `json:"paginator"`
}
type Router struct {
ID string `json:"id"`
Name string `json:"name"`
Site string `json:"site"`
Host string `json:"host"`
}
type RouterList struct {
Data []Router `json:"data"`
Paginator Paginator `json:"paginator"`
}
type OLT struct {
ID string `json:"id"`
Name string `json:"name"`
Site string `json:"site"`
Host string `json:"host"`
}
type OLTList struct {
Data []OLT `json:"data"`
Paginator Paginator `json:"paginator"`
}
type SiteAttachment struct {
NetworkPrefixes []string `json:"network_prefixes,omitempty"`
}
type Site struct {
ID string `json:"id"`
Name string `json:"name"`
Attachment *SiteAttachment `json:"attachment,omitempty"`
}
type SiteList struct {
Data []Site `json:"data"`
Paginator Paginator `json:"paginator"`
}