unifi

package
v1.8.2-0...-d7354e9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2020 License: MPL-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIError

type APIError struct {
	RC      string
	Message string
}

func (*APIError) Error

func (err *APIError) Error() string

type Account

type Account struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	IP               string `json:"ip,omitempty"`                 // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	Name             string `json:"name,omitempty"`               // ^[^"' ]+$
	TunnelConfigType string `json:"tunnel_config_type,omitempty"` // vpn|802.1x|custom
	TunnelMediumType int    `json:"tunnel_medium_type,omitempty"` // [1-9]|1[0-5]|^$
	TunnelType       int    `json:"tunnel_type,omitempty"`        // [1-9]|1[0-3]|^$
	VLAN             int    `json:"vlan,omitempty"`               // [2-9]|[1-9][0-9]{1,2}|[1-3][0-9]{3}|400[0-9]|^$
	XPassword        string `json:"x_password,omitempty"`
}

func (*Account) MarshalJSON

func (dst *Account) MarshalJSON() ([]byte, error)

func (*Account) UnmarshalJSON

func (dst *Account) UnmarshalJSON(b []byte) error

type BroadcastGroup

type BroadcastGroup struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	MemberTable []string `json:"member_table,omitempty"`
	Name        string   `json:"name,omitempty"`
}

type ChannelPlan

type ChannelPlan struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	ApBlacklistedChannels []struct {
		Channel   int    `json:"channel,omitempty"`   // 36|38|40|42|44|46|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140|144|149|153|157|161|165|183|184|185|187|188|189|192|196
		MAC       string `json:"mac,omitempty"`       // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$
		Timestamp int    `json:"timestamp,omitempty"` // [1-9][0-9]{12}
	} `json:"ap_blacklisted_channels,omitempty"`
	ConfSource string `json:"conf_source,omitempty"` // manual|radio-ai
	Coupling   []struct {
		Rssi   int    `json:"rssi,omitempty"`
		Source string `json:"source,omitempty"` // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2}).*$
		Target string `json:"target,omitempty"` // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2}).*$
	} `json:"coupling,omitempty"`
	Date       string  `json:"date"` // ^$|^(20[0-9]{2}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])Z?$
	Fitness    float64 `json:"fitness,omitempty"`
	Note       string  `json:"note,omitempty"`  // .{0,1024}
	Radio      string  `json:"radio,omitempty"` // na|ng|ng\+na
	RadioTable []struct {
		BackupChannel string `json:"backup_channel,omitempty"` // [0-9]|[1][0-4]|16|34|36|38|40|42|44|46|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140|144|149|153|157|161|165|183|184|185|187|188|189|192|196|auto
		Channel       string `json:"channel,omitempty"`        // [0-9]|[1][0-4]|16|34|36|38|40|42|44|46|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140|144|149|153|157|161|165|183|184|185|187|188|189|192|196|auto
		DeviceMAC     string `json:"device_mac,omitempty"`     // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$
		Name          string `json:"name,omitempty"`           // [a-z]*[0-9]*
		TxPower       string `json:"tx_power,omitempty"`       // [\d]+|auto
		TxPowerMode   string `json:"tx_power_mode,omitempty"`  // auto|medium|high|low|custom
		Width         int    `json:"width,omitempty"`          // 20|40|80|160
	} `json:"radio_table,omitempty"`
	Satisfaction      float64 `json:"satisfaction,omitempty"`
	SatisfactionTable []struct {
		DeviceMAC    string  `json:"device_mac,omitempty"` // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$
		Satisfaction float64 `json:"satisfaction,omitempty"`
	} `json:"satisfaction_table,omitempty"`
	SiteBlacklistedChannels []struct {
		Channel   int `json:"channel,omitempty"`   // 36|38|40|42|44|46|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140|144|149|153|157|161|165|183|184|185|187|188|189|192|196
		Timestamp int `json:"timestamp,omitempty"` // [1-9][0-9]{12}
	} `json:"site_blacklisted_channels,omitempty"`
}

type Client

type Client struct {
	// single thread client calls for CSRF, etc.
	sync.Mutex
	// contains filtered or unexported fields
}

func (*Client) BlockUserByMAC

func (c *Client) BlockUserByMAC(ctx context.Context, site, mac string) error

func (*Client) CSRFToken

func (c *Client) CSRFToken() string

func (*Client) CreateAccount

func (c *Client) CreateAccount(ctx context.Context, site string, d *Account) (*Account, error)

func (*Client) CreateDevice

func (c *Client) CreateDevice(ctx context.Context, site string, d *Device) (*Device, error)

func (*Client) CreateFirewallGroup

func (c *Client) CreateFirewallGroup(ctx context.Context, site string, d *FirewallGroup) (*FirewallGroup, error)

func (*Client) CreateFirewallRule

func (c *Client) CreateFirewallRule(ctx context.Context, site string, d *FirewallRule) (*FirewallRule, error)

func (*Client) CreateNetwork

func (c *Client) CreateNetwork(ctx context.Context, site string, d *Network) (*Network, error)

func (*Client) CreatePortForward

func (c *Client) CreatePortForward(ctx context.Context, site string, d *PortForward) (*PortForward, error)

func (*Client) CreatePortProfile

func (c *Client) CreatePortProfile(ctx context.Context, site string, d *PortProfile) (*PortProfile, error)

func (*Client) CreateRADIUSProfile

func (c *Client) CreateRADIUSProfile(ctx context.Context, site string, d *RADIUSProfile) (*RADIUSProfile, error)

func (*Client) CreateRouting

func (c *Client) CreateRouting(ctx context.Context, site string, d *Routing) (*Routing, error)

func (*Client) CreateSite

func (c *Client) CreateSite(ctx context.Context, description string) ([]Site, error)

func (*Client) CreateUser

func (c *Client) CreateUser(ctx context.Context, site string, d *User) (*User, error)

func (*Client) CreateUserGroup

func (c *Client) CreateUserGroup(ctx context.Context, site string, d *UserGroup) (*UserGroup, error)

func (*Client) CreateWLAN

func (c *Client) CreateWLAN(ctx context.Context, site string, d *WLAN) (*WLAN, error)

func (*Client) CreateWLANGroup

func (c *Client) CreateWLANGroup(ctx context.Context, site string, d *WLANGroup) (*WLANGroup, error)

func (*Client) DeleteAccount

func (c *Client) DeleteAccount(ctx context.Context, site, id string) error

func (*Client) DeleteDevice

func (c *Client) DeleteDevice(ctx context.Context, site, id string) error

func (*Client) DeleteFirewallGroup

func (c *Client) DeleteFirewallGroup(ctx context.Context, site, id string) error

func (*Client) DeleteFirewallRule

func (c *Client) DeleteFirewallRule(ctx context.Context, site, id string) error

func (*Client) DeleteNetwork

func (c *Client) DeleteNetwork(ctx context.Context, site, id, name string) error

func (*Client) DeletePortForward

func (c *Client) DeletePortForward(ctx context.Context, site, id string) error

func (*Client) DeletePortProfile

func (c *Client) DeletePortProfile(ctx context.Context, site, id string) error

func (*Client) DeleteRADIUSProfile

func (c *Client) DeleteRADIUSProfile(ctx context.Context, site, id string) error

func (*Client) DeleteRouting

func (c *Client) DeleteRouting(ctx context.Context, site, id string) error

func (*Client) DeleteSite

func (c *Client) DeleteSite(ctx context.Context, id string) ([]Site, error)

func (*Client) DeleteUserByMAC

func (c *Client) DeleteUserByMAC(ctx context.Context, site, mac string) error

func (*Client) DeleteUserGroup

func (c *Client) DeleteUserGroup(ctx context.Context, site, id string) error

func (*Client) DeleteWLAN

func (c *Client) DeleteWLAN(ctx context.Context, site, id string) error

func (*Client) DeleteWLANGroup

func (c *Client) DeleteWLANGroup(ctx context.Context, site, id string) error

func (*Client) GetAccount

func (c *Client) GetAccount(ctx context.Context, site, id string) (*Account, error)

func (*Client) GetDevice

func (c *Client) GetDevice(ctx context.Context, site, id string) (*Device, error)

func (*Client) GetDeviceByMAC

func (c *Client) GetDeviceByMAC(ctx context.Context, site, mac string) (*Device, error)

func (*Client) GetFirewallGroup

func (c *Client) GetFirewallGroup(ctx context.Context, site, id string) (*FirewallGroup, error)

func (*Client) GetFirewallRule

func (c *Client) GetFirewallRule(ctx context.Context, site, id string) (*FirewallRule, error)

func (*Client) GetNetwork

func (c *Client) GetNetwork(ctx context.Context, site, id string) (*Network, error)

func (*Client) GetPortForward

func (c *Client) GetPortForward(ctx context.Context, site, id string) (*PortForward, error)

func (*Client) GetPortProfile

func (c *Client) GetPortProfile(ctx context.Context, site, id string) (*PortProfile, error)

func (*Client) GetRADIUSProfile

func (c *Client) GetRADIUSProfile(ctx context.Context, site, id string) (*RADIUSProfile, error)

func (*Client) GetRouting

func (c *Client) GetRouting(ctx context.Context, site, id string) (*Routing, error)

func (*Client) GetSetting

func (c *Client) GetSetting(ctx context.Context, site, key string) (*Setting, interface{}, error)

func (*Client) GetSettingRadius

func (c *Client) GetSettingRadius(ctx context.Context, site string) (*SettingRadius, error)

func (*Client) GetSettingUsg

func (c *Client) GetSettingUsg(ctx context.Context, site string) (*SettingUsg, error)

func (*Client) GetSite

func (c *Client) GetSite(ctx context.Context, id string) (*Site, error)

func (*Client) GetUser

func (c *Client) GetUser(ctx context.Context, site, id string) (*User, error)

GetUser returns information about a user from the REST endpoint. The GetUserByMAC method returns slightly different information (for example the IP) as it uses a different endpoint.

func (*Client) GetUserByMAC

func (c *Client) GetUserByMAC(ctx context.Context, site, mac string) (*User, error)

GetUserByMAC returns slightly different information than GetUser, as they use separate endpoints for their lookups. Specifically IP is only returned by this method.

func (*Client) GetUserGroup

func (c *Client) GetUserGroup(ctx context.Context, site, id string) (*UserGroup, error)

func (*Client) GetWLAN

func (c *Client) GetWLAN(ctx context.Context, site, id string) (*WLAN, error)

func (*Client) GetWLANGroup

func (c *Client) GetWLANGroup(ctx context.Context, site, id string) (*WLANGroup, error)

func (*Client) ListAccount

func (c *Client) ListAccount(ctx context.Context, site string) ([]Account, error)

func (*Client) ListDevice

func (c *Client) ListDevice(ctx context.Context, site string) ([]Device, error)

func (*Client) ListFirewallGroup

func (c *Client) ListFirewallGroup(ctx context.Context, site string) ([]FirewallGroup, error)

func (*Client) ListFirewallRule

func (c *Client) ListFirewallRule(ctx context.Context, site string) ([]FirewallRule, error)

func (*Client) ListNetwork

func (c *Client) ListNetwork(ctx context.Context, site string) ([]Network, error)

func (*Client) ListPortForward

func (c *Client) ListPortForward(ctx context.Context, site string) ([]PortForward, error)

func (*Client) ListPortProfile

func (c *Client) ListPortProfile(ctx context.Context, site string) ([]PortProfile, error)

func (*Client) ListRADIUSProfile

func (c *Client) ListRADIUSProfile(ctx context.Context, site string) ([]RADIUSProfile, error)

func (*Client) ListRouting

func (c *Client) ListRouting(ctx context.Context, site string) ([]Routing, error)

func (*Client) ListSites

func (c *Client) ListSites(ctx context.Context) ([]Site, error)

func (*Client) ListUser

func (c *Client) ListUser(ctx context.Context, site string) ([]User, error)

func (*Client) ListUserGroup

func (c *Client) ListUserGroup(ctx context.Context, site string) ([]UserGroup, error)

func (*Client) ListWLAN

func (c *Client) ListWLAN(ctx context.Context, site string) ([]WLAN, error)

func (*Client) ListWLANGroup

func (c *Client) ListWLANGroup(ctx context.Context, site string) ([]WLANGroup, error)

func (*Client) Login

func (c *Client) Login(ctx context.Context, user, pass string) error

func (*Client) SetBaseURL

func (c *Client) SetBaseURL(base string) error

func (*Client) SetHTTPClient

func (c *Client) SetHTTPClient(hc *http.Client) error

func (*Client) UnblockUserByMAC

func (c *Client) UnblockUserByMAC(ctx context.Context, site, mac string) error

func (*Client) UpdateAccount

func (c *Client) UpdateAccount(ctx context.Context, site string, d *Account) (*Account, error)

func (*Client) UpdateDevice

func (c *Client) UpdateDevice(ctx context.Context, site string, d *Device) (*Device, error)

func (*Client) UpdateFirewallGroup

func (c *Client) UpdateFirewallGroup(ctx context.Context, site string, d *FirewallGroup) (*FirewallGroup, error)

func (*Client) UpdateFirewallRule

func (c *Client) UpdateFirewallRule(ctx context.Context, site string, d *FirewallRule) (*FirewallRule, error)

func (*Client) UpdateNetwork

func (c *Client) UpdateNetwork(ctx context.Context, site string, d *Network) (*Network, error)

func (*Client) UpdatePortForward

func (c *Client) UpdatePortForward(ctx context.Context, site string, d *PortForward) (*PortForward, error)

func (*Client) UpdatePortProfile

func (c *Client) UpdatePortProfile(ctx context.Context, site string, d *PortProfile) (*PortProfile, error)

func (*Client) UpdateRADIUSProfile

func (c *Client) UpdateRADIUSProfile(ctx context.Context, site string, d *RADIUSProfile) (*RADIUSProfile, error)

func (*Client) UpdateRouting

func (c *Client) UpdateRouting(ctx context.Context, site string, d *Routing) (*Routing, error)

func (*Client) UpdateSettingRadius

func (c *Client) UpdateSettingRadius(ctx context.Context, site string, d *SettingRadius) (*SettingRadius, error)

func (*Client) UpdateSettingUsg

func (c *Client) UpdateSettingUsg(ctx context.Context, site string, d *SettingUsg) (*SettingUsg, error)

func (*Client) UpdateSite

func (c *Client) UpdateSite(ctx context.Context, name, description string) ([]Site, error)

func (*Client) UpdateUser

func (c *Client) UpdateUser(ctx context.Context, site string, d *User) (*User, error)

func (*Client) UpdateUserGroup

func (c *Client) UpdateUserGroup(ctx context.Context, site string, d *UserGroup) (*UserGroup, error)

func (*Client) UpdateWLAN

func (c *Client) UpdateWLAN(ctx context.Context, site string, d *WLAN) (*WLAN, error)

func (*Client) UpdateWLANGroup

func (c *Client) UpdateWLANGroup(ctx context.Context, site string, d *WLANGroup) (*WLANGroup, error)

type DHCPOption

type DHCPOption struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Code   string `json:"code,omitempty"` // ^(?!(?:15|42|43|44|51|66|67|252)$)([7-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])$
	Name   string `json:"name,omitempty"` // ^[A-Za-z0-9-_]{1,25}$
	Signed bool   `json:"signed"`
	Type   string `json:"type,omitempty"`  // ^(boolean|hexarray|integer|ipaddress|macaddress|text)$
	Width  int    `json:"width,omitempty"` // ^(8|16|32)$
}

type Dashboard

type Dashboard struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	ControllerVersion string `json:"controller_version,omitempty"`
	Desc              string `json:"desc,omitempty"`
	IsPublic          bool   `json:"is_public"`
	Modules           []struct {
		Config       string `json:"config,omitempty"`
		ID           string `json:"id"`
		ModuleID     string `json:"module_id"`
		Restrictions string `json:"restrictions,omitempty"`
	} `json:"modules,omitempty"`
	Name string `json:"name,omitempty"`
}

type Device

type Device struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	MAC string `json:"mac,omitempty"`

	AtfEnabled       bool   `json:"atf_enabled,omitempty"`
	BandsteeringMode string `json:"bandsteering_mode,omitempty"` // off|equal|prefer_5g
	BaresipAuthUser  string `json:"baresip_auth_user,omitempty"` // ^\+?[a-zA-Z0-9_.\-!~*'()]*
	BaresipEnabled   bool   `json:"baresip_enabled,omitempty"`
	BaresipExtension string `json:"baresip_extension,omitempty"` // ^\+?[a-zA-Z0-9_.\-!~*'()]*
	ConfigNetwork    struct {
		BondingEnabled bool   `json:"bonding_enabled,omitempty"`
		DNS1           string `json:"dns1,omitempty"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$|^$
		DNS2           string `json:"dns2,omitempty"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$|^$
		DNSsuffix      string `json:"dnssuffix,omitempty"`
		Gateway        string `json:"gateway,omitempty"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
		IP             string `json:"ip,omitempty"`      // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
		Netmask        string `json:"netmask,omitempty"` // ^((128|192|224|240|248|252|254)\.0\.0\.0)|(255\.(((0|128|192|224|240|248|252|254)\.0\.0)|(255\.(((0|128|192|224|240|248|252|254)\.0)|255\.(0|128|192|224|240|248|252|254)))))$
		Type           string `json:"type,omitempty"`    // dhcp|static
	} `json:"config_network,omitempty"`
	DPIEnabled             bool   `json:"dpi_enabled,omitempty"`
	Disabled               bool   `json:"disabled,omitempty"`
	Dot1XFallbackNetworkID string `json:"dot1x_fallback_networkconf_id,omitempty"` // [\d\w]+|
	Dot1XPortctrlEnabled   bool   `json:"dot1x_portctrl_enabled,omitempty"`
	EthernetOverrides      []struct {
		Ifname       string `json:"ifname,omitempty"`       // eth[0-9]{1,2}
		NetworkGroup string `json:"networkgroup,omitempty"` // LAN[2-8]?|WAN[2]?
	} `json:"ethernet_overrides,omitempty"`
	FlowctrlEnabled            bool    `json:"flowctrl_enabled,omitempty"`
	HeightInMeters             float64 `json:"heightInMeters,omitempty"`
	JumboframeEnabled          bool    `json:"jumboframe_enabled,omitempty"`
	LcmBrightness              int     `json:"lcm_brightness,omitempty"` // [1-9]|[1-9][0-9]|100
	LcmBrightnessOverride      bool    `json:"lcm_brightness_override,omitempty"`
	LcmIDleTimeout             int     `json:"lcm_idle_timeout,omitempty"` // [1-9][0-9]|[1-9][0-9][0-9]|[1-2][0-9][0-9][0-9]|3[0-5][0-9][0-9]|3600
	LcmIDleTimeoutOverride     bool    `json:"lcm_idle_timeout_override,omitempty"`
	LcmTrackerEnabled          bool    `json:"lcm_tracker_enabled,omitempty"`
	LcmTrackerSeed             string  `json:"lcm_tracker_seed,omitempty"`              // .{0,50}
	LedOverride                string  `json:"led_override,omitempty"`                  // default|on|off
	LedOverrideColor           string  `json:"led_override_color,omitempty"`            // ^#(?:[0-9a-fA-F]{3}){1,2}$
	LedOverrideColorBrightness int     `json:"led_override_color_brightness,omitempty"` // ^[0-9][0-9]?$|^100$
	Locked                     bool    `json:"locked,omitempty"`
	LteApn                     string  `json:"lte_apn,omitempty"` // .{1,128}
	LteExtAnt                  bool    `json:"lte_ext_ant,omitempty"`
	LtePoe                     bool    `json:"lte_poe,omitempty"`
	LteSimPin                  int     `json:"lte_sim_pin,omitempty"`
	LteSoftLimit               int     `json:"lte_soft_limit,omitempty"`
	MapID                      string  `json:"map_id,omitempty"`
	MeshStaVapEnabled          bool    `json:"mesh_sta_vap_enabled,omitempty"`
	MgmtNetworkID              string  `json:"mgmt_network_id,omitempty"`       // [\d\w]+
	Name                       string  `json:"name,omitempty"`                  // .{1,128}
	OutdoorModeOverride        string  `json:"outdoor_mode_override,omitempty"` // default|on|off
	OutletEnabled              bool    `json:"outlet_enabled,omitempty"`
	OutletOverrides            []struct {
		CycleEnabled bool   `json:"cycle_enabled,omitempty"`
		Index        int    `json:"index,omitempty"`
		Name         string `json:"name,omitempty"` // .{0,128}
		RelayState   bool   `json:"relay_state,omitempty"`
	} `json:"outlet_overrides,omitempty"`
	PortOverrides []struct {
		AggregateNumPorts            int      `json:"aggregate_num_ports,omitempty"` // [2-6]
		Autoneg                      bool     `json:"autoneg,omitempty"`
		Dot1XCtrl                    string   `json:"dot1x_ctrl,omitempty"`             // auto|force_authorized|force_unauthorized|mac_based|multi_host
		Dot1XIDleTimeout             int      `json:"dot1x_idle_timeout,omitempty"`     // [0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]
		EgressRateLimitKbps          int      `json:"egress_rate_limit_kbps,omitempty"` // 6[4-9]|[7-9][0-9]|[1-9][0-9]{2,6}
		EgressRateLimitKbpsEnabled   bool     `json:"egress_rate_limit_kbps_enabled,omitempty"`
		FullDuplex                   bool     `json:"full_duplex,omitempty"`
		Isolation                    bool     `json:"isolation,omitempty"`
		LldpmedEnabled               bool     `json:"lldpmed_enabled,omitempty"`
		LldpmedNotifyEnabled         bool     `json:"lldpmed_notify_enabled,omitempty"`
		MirrorPortIDX                int      `json:"mirror_port_idx,omitempty"` // [1-9]|[1-4][0-9]|5[0-2]
		Name                         string   `json:"name,omitempty"`            // .{0,128}
		OpMode                       string   `json:"op_mode,omitempty"`         // switch|mirror|aggregate
		PoeMode                      string   `json:"poe_mode,omitempty"`        // auto|pasv24|passthrough|off
		PortIDX                      int      `json:"port_idx,omitempty"`        // [1-9]|[1-4][0-9]|5[0-2]
		PortProfileID                string   `json:"portconf_id,omitempty"`     // [\d\w]+
		PortSecurityEnabled          bool     `json:"port_security_enabled,omitempty"`
		PortSecurityMACAddress       []string `json:"port_security_mac_address,omitempty"` // ^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$
		PriorityQueue1Level          int      `json:"priority_queue1_level,omitempty"`     // [0-9]|[1-9][0-9]|100
		PriorityQueue2Level          int      `json:"priority_queue2_level,omitempty"`     // [0-9]|[1-9][0-9]|100
		PriorityQueue3Level          int      `json:"priority_queue3_level,omitempty"`     // [0-9]|[1-9][0-9]|100
		PriorityQueue4Level          int      `json:"priority_queue4_level,omitempty"`     // [0-9]|[1-9][0-9]|100
		Speed                        int      `json:"speed,omitempty"`                     // 10|100|1000|2500|5000|10000|20000|25000|40000|50000|100000
		StormctrlBroadcastastEnabled bool     `json:"stormctrl_bcast_enabled,omitempty"`
		StormctrlBroadcastastLevel   int      `json:"stormctrl_bcast_level,omitempty"` // [0-9]|[1-9][0-9]|100
		StormctrlBroadcastastRate    int      `json:"stormctrl_bcast_rate,omitempty"`  // [0-9]|[1-9][0-9]{1,6}|1[0-3][0-9]{6}|14[0-7][0-9]{5}|148[0-7][0-9]{4}|14880000
		StormctrlMcastEnabled        bool     `json:"stormctrl_mcast_enabled,omitempty"`
		StormctrlMcastLevel          int      `json:"stormctrl_mcast_level,omitempty"` // [0-9]|[1-9][0-9]|100
		StormctrlMcastRate           int      `json:"stormctrl_mcast_rate,omitempty"`  // [0-9]|[1-9][0-9]{1,6}|1[0-3][0-9]{6}|14[0-7][0-9]{5}|148[0-7][0-9]{4}|14880000
		StormctrlType                string   `json:"stormctrl_type,omitempty"`        // level|rate
		StormctrlUcastEnabled        bool     `json:"stormctrl_ucast_enabled,omitempty"`
		StormctrlUcastLevel          int      `json:"stormctrl_ucast_level,omitempty"` // [0-9]|[1-9][0-9]|100
		StormctrlUcastRate           int      `json:"stormctrl_ucast_rate,omitempty"`  // [0-9]|[1-9][0-9]{1,6}|1[0-3][0-9]{6}|14[0-7][0-9]{5}|148[0-7][0-9]{4}|14880000
		StpPortMode                  bool     `json:"stp_port_mode,omitempty"`
	} `json:"port_overrides,omitempty"`
	PowerSourceCtrl        string `json:"power_source_ctrl,omitempty"` // auto|8023af|8023at|8023bt-type3|8023bt-type4|pasv24|poe-injector|ac|adapter|dc|rps
	PowerSourceCtrlEnabled bool   `json:"power_source_ctrl_enabled,omitempty"`
	RADIUSProfileID        string `json:"radiusprofile_id,omitempty"`
	RadioTable             []struct {
		AntennaGain           int    `json:"antenna_gain,omitempty"`   // ^-?([0-9]|[1-9][0-9])
		AntennaID             int    `json:"antenna_id,omitempty"`     // -1|[0-9]
		BackupChannel         int    `json:"backup_channel,omitempty"` // [0-9]|[1][0-4]|16|34|36|38|40|42|44|46|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140|144|149|153|157|161|165|183|184|185|187|188|189|192|196|auto
		Channel               int    `json:"channel,omitempty"`        // [0-9]|[1][0-4]|4.5|16|34|36|38|40|42|44|46|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140|144|149|153|157|161|165|183|184|185|187|188|189|192|196|auto
		HardNoiseFloorEnabled bool   `json:"hard_noise_floor_enabled,omitempty"`
		Ht                    string `json:"ht,omitempty"` // 20|40|80|160|1080|2160
		LoadbalanceEnabled    bool   `json:"loadbalance_enabled,omitempty"`
		Maxsta                int    `json:"maxsta,omitempty"`   // [1-9]|[1-9][0-9]|1[0-9]{2}|200|^$
		MinRssi               int    `json:"min_rssi,omitempty"` // ^-([1-9]|[1-8][0-9]|9[0-4])$
		MinRssiEnabled        bool   `json:"min_rssi_enabled,omitempty"`
		Name                  string `json:"name,omitempty"`
		Radio                 string `json:"radio,omitempty"`      // ng|na|ad
		SensLevel             int    `json:"sens_level,omitempty"` // ^-([5-8][0-9]|90)$
		SensLevelEnabled      bool   `json:"sens_level_enabled,omitempty"`
		TxPower               int    `json:"tx_power,omitempty"`      // [\d]+|auto
		TxPowerMode           string `json:"tx_power_mode,omitempty"` // auto|medium|high|low|custom
		VwireEnabled          bool   `json:"vwire_enabled,omitempty"`
	} `json:"radio_table,omitempty"`
	ResetbtnEnabled string `json:"resetbtn_enabled,omitempty"` // on|off
	RpsOverride     struct {
		PowerManagementMode string `json:"power_management_mode,omitempty"` // dynamic|static
		RpsPortTable        []struct {
			Name     string `json:"name,omitempty"`      // .{0,32}
			PortIDX  int    `json:"port_idx,omitempty"`  // [1-6]
			PortMode string `json:"port_mode,omitempty"` // auto|force_active|manual|disabled
		} `json:"rps_port_table,omitempty"`
	} `json:"rps_override,omitempty"`
	SnmpContact       string `json:"snmp_contact,omitempty"`  // .{0,255}
	SnmpLocation      string `json:"snmp_location,omitempty"` // .{0,255}
	StpPriority       string `json:"stp_priority,omitempty"`  // 0|4096|8192|12288|16384|20480|24576|28672|32768|36864|40960|45056|49152|53248|57344|61440
	StpVersion        string `json:"stp_version,omitempty"`   // stp|rstp|disabled
	SwitchVLANEnabled bool   `json:"switch_vlan_enabled,omitempty"`
	UbbPairName       string `json:"ubb_pair_name,omitempty"` // .{1,128}
	Volume            int    `json:"volume,omitempty"`        // [0-9]|[1-9][0-9]|100
	WLANOverrides     []struct {
		Enabled            bool   `json:"enabled,omitempty"`
		Name               string `json:"name,omitempty"` // .{1,32}
		NameCombineEnabled bool   `json:"name_combine_enabled,omitempty"`
		NameCombineSuffix  string `json:"name_combine_suffix,omitempty"` // .{0,8}
		Radio              string `json:"radio,omitempty"`               // ng|na
		RadioName          string `json:"radio_name,omitempty"`
		VLAN               int    `json:"vlan,omitempty"` // [2-9]|[1-9][0-9]{1,2}|[1-3][0-9]{3}|40[0-8][0-9]|409[0-5]|^$
		VLANEnabled        bool   `json:"vlan_enabled,omitempty"`
		WLANID             string `json:"wlan_id,omitempty"`      // [\d\w]+
		XPassphrase        string `json:"x_passphrase,omitempty"` // [\x20-\x7E]{8,63}|[0-9a-fA-F]{64}
	} `json:"wlan_overrides,omitempty"`
	X                float64 `json:"x,omitempty"`
	XBaresipPassword string  `json:"x_baresip_password,omitempty"` // ^[a-zA-Z0-9_.\-!~*'()]*
	Y                float64 `json:"y,omitempty"`
}

type DpiApp

type DpiApp struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Apps           []int  `json:"apps,omitempty"`
	Blocked        bool   `json:"blocked"`
	Cats           []int  `json:"cats,omitempty"`
	Enabled        bool   `json:"enabled"`
	Log            bool   `json:"log"`
	Name           string `json:"name,omitempty"`              // .{1,128}
	QOSRateMaxDown int    `json:"qos_rate_max_down,omitempty"` // -1|[2-9]|[1-9][0-9]{1,4}|100000|10[0-1][0-9]{3}|102[0-3][0-9]{2}|102400
	QOSRateMaxUp   int    `json:"qos_rate_max_up,omitempty"`   // -1|[2-9]|[1-9][0-9]{1,4}|100000|10[0-1][0-9]{3}|102[0-3][0-9]{2}|102400
}

type DpiGroup

type DpiGroup struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	DPIappIDs []string `json:"dpiapp_ids,omitempty"` // [\d\w]+
	Enabled   bool     `json:"enabled"`
	Name      string   `json:"name,omitempty"` // .{1,128}
}

type DynamicDNS

type DynamicDNS struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	CustomService string   `json:"custom_service,omitempty"` // ^[^"' ]+$
	HostName      string   `json:"host_name,omitempty"`      // ^[^"' ]+$
	Interface     string   `json:"interface,omitempty"`      // wan|wan2
	Login         string   `json:"login,omitempty"`          // ^[^"' ]+$
	Options       []string `json:"options,omitempty"`        // ^[^"' ]+$
	Server        string   `json:"server"`                   // ^[^"' ]+$|^$
	Service       string   `json:"service,omitempty"`        // afraid|changeip|cloudflare|dnspark|dslreports|dyndns|easydns|googledomains|namecheap|noip|sitelutions|zoneedit|custom
	XPassword     string   `json:"x_password,omitempty"`     // ^[^"' ]+$
}

type FirewallGroup

type FirewallGroup struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	GroupMembers []string `json:"group_members,omitempty"`
	GroupType    string   `json:"group_type,omitempty"` // address-group|port-group|ipv6-address-group
	Name         string   `json:"name,omitempty"`       // .{1,64}
}

type FirewallRule

type FirewallRule struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Action                string   `json:"action,omitempty"` // drop|reject|accept
	Contiguous            bool     `json:"contiguous"`
	DstAddress            string   `json:"dst_address,omitempty"`
	DstAddressIPV6        string   `json:"dst_address_ipv6,omitempty"`
	DstFirewallGroupIDs   []string `json:"dst_firewallgroup_ids,omitempty"` // [\d\w]+
	DstNetworkID          string   `json:"dst_networkconf_id"`              // [\d\w]+|^$
	DstNetworkType        string   `json:"dst_networkconf_type,omitempty"`  // ADDRv4|NETv4
	DstPort               string   `json:"dst_port,omitempty"`
	Enabled               bool     `json:"enabled"`
	ICMPTypename          string   `json:"icmp_typename"`   // ^$|address-mask-reply|address-mask-request|any|communication-prohibited|destination-unreachable|echo-reply|echo-request|fragmentation-needed|host-precedence-violation|host-prohibited|host-redirect|host-unknown|host-unreachable|ip-header-bad|network-prohibited|network-redirect|network-unknown|network-unreachable|parameter-problem|port-unreachable|precedence-cutoff|protocol-unreachable|redirect|required-option-missing|router-advertisement|router-solicitation|source-quench|source-route-failed|time-exceeded|timestamp-reply|timestamp-request|TOS-host-redirect|TOS-host-unreachable|TOS-network-redirect|TOS-network-unreachable|ttl-zero-during-reassembly|ttl-zero-during-transit
	ICMPv6Typename        string   `json:"icmpv6_typename"` // ^$|address-unreachable|bad-header|beyond-scope|communication-prohibited|destination-unreachable|echo-reply|echo-request|failed-policy|neighbor-advertisement|neighbor-solicitation|no-route|packet-too-big|parameter-problem|port-unreachable|redirect|reject-route|router-advertisement|router-solicitation|time-exceeded|ttl-zero-during-reassembly|ttl-zero-during-transit|unknown-header-type|unknown-option
	IPSec                 string   `json:"ipsec"`           // match-ipsec|match-none|^$
	Logging               bool     `json:"logging"`
	MonthDays             string   `json:"monthdays"` // ^$|^(([1-9]|[12][0-9]|3[01])(,([1-9]|[12][0-9]|3[01])){0,30})$
	MonthDaysNegate       bool     `json:"monthdays_negate"`
	Name                  string   `json:"name,omitempty"` // .{1,128}
	Protocol              string   `json:"protocol"`       // ^$|all|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|tcp_udp|ah|ax.25|dccp|ddp|egp|eigrp|encap|esp|etherip|fc|ggp|gre|hip|hmp|icmp|idpr-cmtp|idrp|igmp|igp|ip|ipcomp|ipencap|ipip|ipv6|ipv6-frag|ipv6-icmp|ipv6-nonxt|ipv6-opts|ipv6-route|isis|iso-tp4|l2tp|manet|mobility-header|mpls-in-ip|ospf|pim|pup|rdp|rohc|rspf|rsvp|sctp|shim6|skip|st|tcp|udp|udplite|vmtp|vrrp|wesp|xns-idp|xtp
	ProtocolMatchExcepted bool     `json:"protocol_match_excepted"`
	ProtocolV6            string   `json:"protocol_v6"`          // ^$|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|ah|all|dccp|eigrp|esp|gre|icmpv6|ipcomp|ipv6|ipv6-frag|ipv6-icmp|ipv6-nonxt|ipv6-opts|ipv6-route|isis|l2tp|manet|mobility-header|mpls-in-ip|ospf|pim|rsvp|sctp|shim6|tcp|tcp_udp|udp|vrrp
	RuleIndex             int      `json:"rule_index,omitempty"` // 2[0-9]{3}|4[0-9]{3}
	Ruleset               string   `json:"ruleset,omitempty"`    // WAN_IN|WAN_OUT|WAN_LOCAL|LAN_IN|LAN_OUT|LAN_LOCAL|GUEST_IN|GUEST_OUT|GUEST_LOCAL|WANv6_IN|WANv6_OUT|WANv6_LOCAL|LANv6_IN|LANv6_OUT|LANv6_LOCAL|GUESTv6_IN|GUESTv6_OUT|GUESTv6_LOCAL
	SrcAddress            string   `json:"src_address,omitempty"`
	SrcAddressIPV6        string   `json:"src_address_ipv6,omitempty"`
	SrcFirewallGroupIDs   []string `json:"src_firewallgroup_ids,omitempty"` // [\d\w]+
	SrcMACAddress         string   `json:"src_mac_address"`                 // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$|^$
	SrcNetworkID          string   `json:"src_networkconf_id"`              // [\d\w]+|^$
	SrcNetworkType        string   `json:"src_networkconf_type,omitempty"`  // ADDRv4|NETv4
	SrcPort               string   `json:"src_port,omitempty"`
	StartDate             string   `json:"startdate"` // ^$|^(20[0-9]{2}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$
	StartTime             string   `json:"starttime"` // ^$|^(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$
	StateEstablished      bool     `json:"state_established"`
	StateInvalid          bool     `json:"state_invalid"`
	StateNew              bool     `json:"state_new"`
	StateRelated          bool     `json:"state_related"`
	StopDate              string   `json:"stopdate"` // ^$|^(20[0-9]{2}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$
	StopTime              string   `json:"stoptime"` // ^$|^(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$
	UTC                   bool     `json:"utc"`
	Weekdays              string   `json:"weekdays"` // ^$|^((Mon|Tue|Wed|Thu|Fri|Sat|Sun)(,(Mon|Tue|Wed|Thu|Fri|Sat|Sun)){0,6})$
	WeekdaysNegate        bool     `json:"weekdays_negate"`
}

type HeatMap

type HeatMap struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Description string `json:"description,omitempty"`
	MapID       string `json:"map_id"`
	Name        string `json:"name,omitempty"` // .*[^\s]+.*
	Type        string `json:"type,omitempty"` // download|upload
}

type HeatMapPoint

type HeatMapPoint struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	DownloadSpeed float64 `json:"download_speed,omitempty"`
	HeatmapID     string  `json:"heatmap_id"`
	UploadSpeed   float64 `json:"upload_speed,omitempty"`
	X             float64 `json:"x,omitempty"`
	Y             float64 `json:"y,omitempty"`
}

type Hotspot2Conf

type Hotspot2Conf struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	AnqpDomainID int `json:"anqp_domain_id,omitempty"` // ^0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|$
	Capab        []struct {
		Port     int    `json:"port,omitempty"`     // ^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|$
		Protocol string `json:"protocol,omitempty"` // icmp|tcp_udp|tcp|udp|esp
		Status   string `json:"status,omitempty"`   // closed|open|unknown
	} `json:"capab,omitempty"`
	CellularNetworkList []struct {
		Mcc  int    `json:"mcc,omitempty"`
		Mnc  int    `json:"mnc,omitempty"`
		Name string `json:"name,omitempty"` // .{1,128}
	} `json:"cellular_network_list,omitempty"`
	DeauthReqTimeout int      `json:"deauth_req_timeout,omitempty"` // [1-9][0-9]|[1-9][0-9][0-9]|[1-2][0-9][0-9][0-9]|3[0-5][0-9][0-9]|3600
	DisableDgaf      bool     `json:"disable_dgaf"`
	DomainNameList   []string `json:"domain_name_list,omitempty"` // .{1,128}
	FriendlyName     []struct {
		Language string `json:"language,omitempty"` // [a-z]{3}
		Text     string `json:"text,omitempty"`     // .{1,128}
	} `json:"friendly_name,omitempty"`
	GasAdvanced       bool   `json:"gas_advanced"`
	GasComebackDelay  int    `json:"gas_comeback_delay,omitempty"`
	GasFragLimit      int    `json:"gas_frag_limit,omitempty"`
	Hessid            string `json:"hessid"` // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$|^$
	HessidUsed        bool   `json:"hessid_used"`
	IPaddrTypeAvailV4 int    `json:"ipaddr_type_avail_v4,omitempty"` // 0|1|2|3|4|5|6|7
	IPaddrTypeAvailV6 int    `json:"ipaddr_type_avail_v6,omitempty"` // 0|1|2
	Icons             []struct {
		Data     string `json:"data,omitempty"`
		Filename string `json:"filename,omitempty"` // .{1,256}
		Height   int    `json:"height,omitempty"`
		Language string `json:"language,omitempty"` // [a-z]{3}
		Media    string `json:"media,omitempty"`    // .{1,256}
		Name     string `json:"name,omitempty"`     // .{1,256}
		Size     int    `json:"size,omitempty"`
		Width    int    `json:"width,omitempty"`
	} `json:"icons,omitempty"`
	MetricsDownlinkLoad     int    `json:"metrics_downlink_load,omitempty"`
	MetricsDownlinkLoadSet  bool   `json:"metrics_downlink_load_set"`
	MetricsDownlinkSpeed    int    `json:"metrics_downlink_speed,omitempty"`
	MetricsDownlinkSpeedSet bool   `json:"metrics_downlink_speed_set"`
	MetricsInfoAtCapacity   bool   `json:"metrics_info_at_capacity"`
	MetricsInfoLinkStatus   string `json:"metrics_info_link_status,omitempty"` // up|down|test
	MetricsInfoSymmetric    bool   `json:"metrics_info_symmetric"`
	MetricsMeasurement      int    `json:"metrics_measurement,omitempty"`
	MetricsMeasurementSet   bool   `json:"metrics_measurement_set"`
	MetricsStatus           bool   `json:"metrics_status"`
	MetricsUplinkLoad       int    `json:"metrics_uplink_load,omitempty"`
	MetricsUplinkLoadSet    bool   `json:"metrics_uplink_load_set"`
	MetricsUplinkSpeed      int    `json:"metrics_uplink_speed,omitempty"`
	MetricsUplinkSpeedSet   bool   `json:"metrics_uplink_speed_set"`
	NaiRealmList            []struct {
		AuthIDs   string `json:"auth_ids,omitempty"`
		AuthVals  string `json:"auth_vals,omitempty"`
		EapMethod int    `json:"eap_method,omitempty"` // 13|21|18|23|50
		Encoding  int    `json:"encoding,omitempty"`   // 0|1
		Name      string `json:"name,omitempty"`       // .{1,128}
		Status    bool   `json:"status"`
	} `json:"nai_realm_list,omitempty"`
	Name                  string `json:"name,omitempty"` // .{1,128}
	NetworkAccessAsra     bool   `json:"network_access_asra"`
	NetworkAccessEsr      bool   `json:"network_access_esr"`
	NetworkAccessInternet bool   `json:"network_access_internet"`
	NetworkAccessUesa     bool   `json:"network_access_uesa"`
	NetworkAuthType       int    `json:"network_auth_type,omitempty"` // -1|0|1|2|3
	NetworkAuthUrl        string `json:"network_auth_url,omitempty"`
	NetworkType           int    `json:"network_type,omitempty"` // 0|1|2|3|4|5|14|15
	Osu                   []struct {
		Description []struct {
			Language string `json:"language,omitempty"` // [a-z]{3}
			Text     string `json:"text,omitempty"`     // .{1,128}
		} `json:"description,omitempty"`
		FriendlyName []struct {
			Language string `json:"language,omitempty"` // [a-z]{3}
			Text     string `json:"text,omitempty"`     // .{1,128}
		} `json:"friendly_name,omitempty"`
		Icon []struct {
			Name string `json:"name,omitempty"` // .{1,128}
		} `json:"icon,omitempty"`
		MethodOmaDm      bool   `json:"method_oma_dm"`
		MethodSoapXmlSpp bool   `json:"method_soap_xml_spp"`
		Nai              string `json:"nai,omitempty"`
		Nai2             string `json:"nai2,omitempty"`
		OperatingClass   string `json:"operating_class,omitempty"` // [0-9A-Fa-f]{12}
		ServerUri        string `json:"server_uri,omitempty"`
	} `json:"osu,omitempty"`
	OsuSSID    string `json:"osu_ssid"`
	QOSMapDcsp []struct {
		High int `json:"high,omitempty"`
		Low  int `json:"low,omitempty"`
	} `json:"qos_map_dcsp,omitempty"`
	QOSMapExceptions []struct {
		Dcsp int `json:"dcsp,omitempty"`
		Up   int `json:"up,omitempty"` // [0-7]
	} `json:"qos_map_exceptions,omitempty"`
	QOSMapStatus          bool `json:"qos_map_status"`
	RoamingConsortiumList []struct {
		Name string `json:"name,omitempty"` // .{1,128}
		Oid  string `json:"oid,omitempty"`  // .{1,128}
	} `json:"roaming_consortium_list,omitempty"`
	SaveTimestamp string `json:"save_timestamp,omitempty"`
	TCFilename    string `json:"t_c_filename,omitempty"` // .{1,256}
	TCTimestamp   int    `json:"t_c_timestamp,omitempty"`
	VenueGroup    int    `json:"venue_group,omitempty"` // 0|1|2|3|4|5|6|7|8|9|10|11
	VenueName     []struct {
		Language string `json:"language,omitempty"` // [a-z]{3}
		Name     string `json:"name,omitempty"`
		Url      string `json:"url,omitempty"`
	} `json:"venue_name,omitempty"`
	VenueType int `json:"venue_type,omitempty"` // 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15
}

type HotspotOp

type HotspotOp struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Name      string `json:"name,omitempty"` // .{1,256}
	Note      string `json:"note,omitempty"`
	XPassword string `json:"x_password,omitempty"` // .{1,256}
}

type HotspotPackage

type HotspotPackage struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Amount                         float64 `json:"amount,omitempty"`
	ChargedAs                      string  `json:"charged_as,omitempty"`
	Currency                       string  `json:"currency,omitempty"` // [A-Z]{3}
	CustomPaymentFieldsEnabled     bool    `json:"custom_payment_fields_enabled"`
	Hours                          int     `json:"hours,omitempty"`
	Index                          int     `json:"index,omitempty"`
	LimitDown                      int     `json:"limit_down,omitempty"`
	LimitOverwrite                 bool    `json:"limit_overwrite"`
	LimitQuota                     int     `json:"limit_quota,omitempty"`
	LimitUp                        int     `json:"limit_up,omitempty"`
	Name                           string  `json:"name,omitempty"`
	PaymentFieldsAddressEnabled    bool    `json:"payment_fields_address_enabled"`
	PaymentFieldsAddressRequired   bool    `json:"payment_fields_address_required"`
	PaymentFieldsCityEnabled       bool    `json:"payment_fields_city_enabled"`
	PaymentFieldsCityRequired      bool    `json:"payment_fields_city_required"`
	PaymentFieldsCountryEnabled    bool    `json:"payment_fields_country_enabled"`
	PaymentFieldsCountryRequired   bool    `json:"payment_fields_country_required"`
	PaymentFieldsEmailEnabled      bool    `json:"payment_fields_email_enabled"`
	PaymentFieldsEmailRequired     bool    `json:"payment_fields_email_required"`
	PaymentFieldsFirstNameEnabled  bool    `json:"payment_fields_first_name_enabled"`
	PaymentFieldsFirstNameRequired bool    `json:"payment_fields_first_name_required"`
	PaymentFieldsLastNameEnabled   bool    `json:"payment_fields_last_name_enabled"`
	PaymentFieldsLastNameRequired  bool    `json:"payment_fields_last_name_required"`
	PaymentFieldsStateEnabled      bool    `json:"payment_fields_state_enabled"`
	PaymentFieldsStateRequired     bool    `json:"payment_fields_state_required"`
	PaymentFieldsZipEnabled        bool    `json:"payment_fields_zip_enabled"`
	PaymentFieldsZipRequired       bool    `json:"payment_fields_zip_required"`
	TrialDurationMinutes           int     `json:"trial_duration_minutes,omitempty"`
	TrialReset                     float64 `json:"trial_reset,omitempty"`
}

type Map

type Map struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Lat        string  `json:"lat,omitempty"` // ^([-]?[\d]+[.]?[\d]*([eE][-+]?[\d]+)?)$
	Lng        string  `json:"lng,omitempty"` // ^([-]?[\d]+[.]?[\d]*([eE][-+]?[\d]+)?)$
	MapTypeID  string  `json:"mapTypeId"`     // satellite|roadmap|hybrid|terrain
	Name       string  `json:"name,omitempty"`
	OffsetLeft float64 `json:"offset_left,omitempty"`
	OffsetTop  float64 `json:"offset_top,omitempty"`
	Opacity    float64 `json:"opacity,omitempty"` // ^(0(\.[\d]{1,2})?|1)$|^$
	Selected   bool    `json:"selected"`
	Tilt       int     `json:"tilt,omitempty"`
	Type       string  `json:"type,omitempty"` // designerMap|imageMap|googleMap
	Unit       string  `json:"unit,omitempty"` // m|f
	Upp        float64 `json:"upp,omitempty"`
	Zoom       int     `json:"zoom,omitempty"`
}

type MediaFile

type MediaFile struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Name string `json:"name,omitempty"`
}

type Network

type Network struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	AutoScaleEnabled        bool   `json:"auto_scale_enabled"`
	DHCPDBootEnabled        bool   `json:"dhcpd_boot_enabled"`
	DHCPDBootFilename       string `json:"dhcpd_boot_filename,omitempty"` // .{1,256}
	DHCPDBootServer         string `json:"dhcpd_boot_server"`             // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$|(?=^.{3,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?<!-)\.)+[a-zA-Z]{2,63}$)|[a-zA-Z0-9-]{1,63}|^$
	DHCPDDNS1               string `json:"dhcpd_dns_1"`                   // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDDNS2               string `json:"dhcpd_dns_2"`                   // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDDNS3               string `json:"dhcpd_dns_3"`                   // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDDNS4               string `json:"dhcpd_dns_4"`                   // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDDNSEnabled         bool   `json:"dhcpd_dns_enabled"`
	DHCPDEnabled            bool   `json:"dhcpd_enabled"`
	DHCPDGateway            string `json:"dhcpd_gateway"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDGatewayEnabled     bool   `json:"dhcpd_gateway_enabled"`
	DHCPDIP1                string `json:"dhcpd_ip_1"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDIP2                string `json:"dhcpd_ip_2"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDIP3                string `json:"dhcpd_ip_3"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDLeaseTime          int    `json:"dhcpd_leasetime,omitempty"`
	DHCPDMAC1               string `json:"dhcpd_mac_1"` // (^$|^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$)
	DHCPDMAC2               string `json:"dhcpd_mac_2"` // (^$|^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$)
	DHCPDMAC3               string `json:"dhcpd_mac_3"` // (^$|^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$)
	DHCPDNtp1               string `json:"dhcpd_ntp_1"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDNtp2               string `json:"dhcpd_ntp_2"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDNtpEnabled         bool   `json:"dhcpd_ntp_enabled"`
	DHCPDStart              string `json:"dhcpd_start"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDStop               string `json:"dhcpd_stop"`  // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDTFTPServer         string `json:"dhcpd_tftp_server,omitempty"`
	DHCPDTimeOffset         int    `json:"dhcpd_time_offset,omitempty"` // ^0$|^-?([1-9]([0-9]{1,3})?|[1-7][0-9]{4}|[8][0-5][0-9]{3}|86[0-3][0-9]{2}|86400)$
	DHCPDTimeOffsetEnabled  bool   `json:"dhcpd_time_offset_enabled"`
	DHCPDUnifiController    string `json:"dhcpd_unifi_controller"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDV6DNS1             string `json:"dhcpdv6_dns_1,omitempty"`
	DHCPDV6DNS2             string `json:"dhcpdv6_dns_2,omitempty"`
	DHCPDV6DNS3             string `json:"dhcpdv6_dns_3,omitempty"`
	DHCPDV6DNS4             string `json:"dhcpdv6_dns_4,omitempty"`
	DHCPDV6DNSAuto          bool   `json:"dhcpdv6_dns_auto"`
	DHCPDV6Enabled          bool   `json:"dhcpdv6_enabled"`
	DHCPDV6LeaseTime        int    `json:"dhcpdv6_leasetime,omitempty"`
	DHCPDV6Start            string `json:"dhcpdv6_start,omitempty"`
	DHCPDV6Stop             string `json:"dhcpdv6_stop,omitempty"`
	DHCPDWPAdUrl            string `json:"dhcpd_wpad_url,omitempty"`
	DHCPDWins1              string `json:"dhcpd_wins_1"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDWins2              string `json:"dhcpd_wins_2"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPDWinsEnabled        bool   `json:"dhcpd_wins_enabled"`
	DHCPRelayEnabled        bool   `json:"dhcp_relay_enabled"`
	DHCPguardEnabled        bool   `json:"dhcpguard_enabled"`
	DPIEnabled              bool   `json:"dpi_enabled"`
	DPIgroupID              string `json:"dpigroup_id"` // [\d\w]+|^$
	DomainName              string `json:"domain_name"` // (?=^.{3,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?<!-)\.)+[a-zA-Z]{2,63}$)|^$|[a-zA-Z0-9-]{1,63}
	Enabled                 bool   `json:"enabled"`
	ExposedToSiteVPN        bool   `json:"exposed_to_site_vpn"`
	GatewayDevice           string `json:"gateway_device"`         // (^$|^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$)
	GatewayType             string `json:"gateway_type,omitempty"` // default|switch
	IGMPFastleave           bool   `json:"igmp_fastleave"`
	IGMPGroupmembership     int    `json:"igmp_groupmembership,omitempty"` // [2-9]|[1-9][0-9]{1,2}|[1-2][0-9]{3}|3[0-5][0-9]{2}|3600|^$
	IGMPMaxresponse         int    `json:"igmp_maxresponse,omitempty"`     // [1-9]|1[0-9]|2[0-5]|^$
	IGMPMcrtrexpiretime     int    `json:"igmp_mcrtrexpiretime,omitempty"` // [0-9]|[1-9][0-9]{1,2}|[1-2][0-9]{3}|3[0-5][0-9]{2}|3600|^$
	IGMPQuerier             string `json:"igmp_querier"`                   // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	IGMPSnooping            bool   `json:"igmp_snooping"`
	IGMPSupression          bool   `json:"igmp_supression"`
	IPSecDhGroup            int    `json:"ipsec_dh_group,omitempty"` // 2|5|14|15|16|19|20|21|25|26
	IPSecDynamicRouting     bool   `json:"ipsec_dynamic_routing"`
	IPSecEncryption         string `json:"ipsec_encryption,omitempty"`   // aes128|aes192|aes256|3des
	IPSecEspDhGroup         int    `json:"ipsec_esp_dh_group,omitempty"` // 1|2|5|14|15|16|17|18
	IPSecHash               string `json:"ipsec_hash,omitempty"`         // sha1|md5|sha256|sha384|sha512
	IPSecIkeDhGroup         int    `json:"ipsec_ike_dh_group,omitempty"` // 1|2|5|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32
	IPSecInterface          string `json:"ipsec_interface,omitempty"`    // wan|wan2
	IPSecKeyExchange        string `json:"ipsec_key_exchange,omitempty"` // ikev1|ikev2
	IPSecLocalIP            string `json:"ipsec_local_ip,omitempty"`     // ^any$|^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
	IPSecPeerIP             string `json:"ipsec_peer_ip,omitempty"`      // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
	IPSecPfs                bool   `json:"ipsec_pfs"`
	IPSecProfile            string `json:"ipsec_profile,omitempty"`       // customized|azure_dynamic|azure_static
	IPSubnet                string `json:"ip_subnet,omitempty"`           // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2][0-9]|30)$
	IPV6InterfaceType       string `json:"ipv6_interface_type,omitempty"` // static|pd|none
	IPV6PDInterface         string `json:"ipv6_pd_interface,omitempty"`   // wan|wan2
	IPV6PDPrefixid          string `json:"ipv6_pd_prefixid"`              // ^$|[a-fA-F0-9]{1,4}
	IPV6PDStart             string `json:"ipv6_pd_start,omitempty"`
	IPV6PDStop              string `json:"ipv6_pd_stop,omitempty"`
	IPV6RaEnabled           bool   `json:"ipv6_ra_enabled"`
	IPV6RaPreferredLifetime int    `json:"ipv6_ra_preferred_lifetime,omitempty"` // ^([0-9]|[1-8][0-9]|9[0-9]|[1-8][0-9]{2}|9[0-8][0-9]|99[0-9]|[1-8][0-9]{3}|9[0-8][0-9]{2}|99[0-8][0-9]|999[0-9]|[1-8][0-9]{4}|9[0-8][0-9]{3}|99[0-8][0-9]{2}|999[0-8][0-9]|9999[0-9]|[1-8][0-9]{5}|9[0-8][0-9]{4}|99[0-8][0-9]{3}|999[0-8][0-9]{2}|9999[0-8][0-9]|99999[0-9]|[1-8][0-9]{6}|9[0-8][0-9]{5}|99[0-8][0-9]{4}|999[0-8][0-9]{3}|9999[0-8][0-9]{2}|99999[0-8][0-9]|999999[0-9]|[12][0-9]{7}|30[0-9]{6}|31[0-4][0-9]{5}|315[0-2][0-9]{4}|3153[0-5][0-9]{3}|31536000)$|^$
	IPV6RaPriority          string `json:"ipv6_ra_priority,omitempty"`           // high|medium|low
	IPV6RaValidLifetime     int    `json:"ipv6_ra_valid_lifetime,omitempty"`     // ^([0-9]|[1-8][0-9]|9[0-9]|[1-8][0-9]{2}|9[0-8][0-9]|99[0-9]|[1-8][0-9]{3}|9[0-8][0-9]{2}|99[0-8][0-9]|999[0-9]|[1-8][0-9]{4}|9[0-8][0-9]{3}|99[0-8][0-9]{2}|999[0-8][0-9]|9999[0-9]|[1-8][0-9]{5}|9[0-8][0-9]{4}|99[0-8][0-9]{3}|999[0-8][0-9]{2}|9999[0-8][0-9]|99999[0-9]|[1-8][0-9]{6}|9[0-8][0-9]{5}|99[0-8][0-9]{4}|999[0-8][0-9]{3}|9999[0-8][0-9]{2}|99999[0-8][0-9]|999999[0-9]|[12][0-9]{7}|30[0-9]{6}|31[0-4][0-9]{5}|315[0-2][0-9]{4}|3153[0-5][0-9]{3}|31536000)$|^$
	IPV6Subnet              string `json:"ipv6_subnet,omitempty"`
	IsNAT                   bool   `json:"is_nat"`
	L2TpInterface           string `json:"l2tp_interface,omitempty"` // wan|wan2
	LteLanEnabled           bool   `json:"lte_lan_enabled"`
	NATOutboundIPAddresses  []struct {
		IPAddress       string `json:"ip_address"`                  // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
		WANNetworkGroup string `json:"wan_network_group,omitempty"` // WAN|WAN2
	} `json:"nat_outbound_ip_addresses,omitempty"`
	Name                  string   `json:"name,omitempty"`                   // .{1,128}
	NetworkGroup          string   `json:"networkgroup,omitempty"`           // LAN[2-8]?
	OpenVPNLocalAddress   string   `json:"openvpn_local_address,omitempty"`  // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
	OpenVPNLocalPort      int      `json:"openvpn_local_port,omitempty"`     // ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])$
	OpenVPNMode           string   `json:"openvpn_mode,omitempty"`           // site-to-site|client|server
	OpenVPNRemoteAddress  string   `json:"openvpn_remote_address,omitempty"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
	OpenVPNRemoteHost     string   `json:"openvpn_remote_host,omitempty"`    // [^\"\' ]+|^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
	OpenVPNRemotePort     int      `json:"openvpn_remote_port,omitempty"`    // ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])$
	PptpcRequireMppe      bool     `json:"pptpc_require_mppe"`
	PptpcRouteDistance    int      `json:"pptpc_route_distance,omitempty"` // ^[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]$|^$
	PptpcServerIP         string   `json:"pptpc_server_ip,omitempty"`      // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|(?=^.{3,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?<!-)\.)+[a-zA-Z]{2,63}$)|^[a-zA-Z0-9-]{1,63}$
	PptpcUsername         string   `json:"pptpc_username,omitempty"`       // [^\"\' ]+
	Priority              int      `json:"priority,omitempty"`             // [1-4]
	Purpose               string   `json:"purpose,omitempty"`              // corporate|guest|remote-user-vpn|site-vpn|vlan-only|vpn-client|wan
	RADIUSProfileID       string   `json:"radiusprofile_id"`
	RemoteSiteID          string   `json:"remote_site_id"`
	RemoteSiteSubnets     []string `json:"remote_site_subnets,omitempty"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2][0-9]|30)$|^$
	RemoteVPNSubnets      []string `json:"remote_vpn_subnets,omitempty"`  // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2][0-9]|30)$|^$
	ReportWANEvent        bool     `json:"report_wan_event"`
	RequireMschapv2       bool     `json:"require_mschapv2"`
	RouteDistance         int      `json:"route_distance,omitempty"` // ^[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]$|^$
	UpnpLanEnabled        bool     `json:"upnp_lan_enabled"`
	UserGroupID           string   `json:"usergroup_id"`
	VLAN                  int      `json:"vlan,omitempty"` // [2-9]|[1-9][0-9]{1,2}|[1-3][0-9]{3}|400[0-9]|^$
	VLANEnabled           bool     `json:"vlan_enabled"`
	VPNClientDefaultRoute bool     `json:"vpn_client_default_route"`
	VPNClientPullDNS      bool     `json:"vpn_client_pull_dns"`
	VPNType               string   `json:"vpn_type,omitempty"` // auto|ipsec-vpn|openvpn-vpn|pptp-client|l2tp-server|pptp-server|uid-server
	WANDHCPOptions        []struct {
		OptionNumber int    `json:"optionNumber,omitempty"` // ([1-9]|[1-8][0-9]|9[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4])
		Value        string `json:"value,omitempty"`
	} `json:"wan_dhcp_options,omitempty"`
	WANDHCPv6PDSize         int      `json:"wan_dhcpv6_pd_size,omitempty"`      // ^(4[89]|5[0-9]|6[0-4])$|^$
	WANDNS1                 string   `json:"wan_dns1"`                          // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	WANDNS2                 string   `json:"wan_dns2"`                          // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	WANDNS3                 string   `json:"wan_dns3"`                          // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	WANDNS4                 string   `json:"wan_dns4"`                          // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	WANEgressQOS            int      `json:"wan_egress_qos,omitempty"`          // [1-7]|^$
	WANGateway              string   `json:"wan_gateway"`                       // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	WANGatewayV6            string   `json:"wan_gateway_v6"`                    // ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$|^$
	WANIP                   string   `json:"wan_ip,omitempty"`                  // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
	WANIPAliases            []string `json:"wan_ip_aliases,omitempty"`          // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2][0-9]|30)$|^$
	WANIPV6                 string   `json:"wan_ipv6"`                          // ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$|^$
	WANLoadBalanceType      string   `json:"wan_load_balance_type,omitempty"`   // failover-only|weighted
	WANLoadBalanceWeight    int      `json:"wan_load_balance_weight,omitempty"` // [1-9]|[1-9][0-9]
	WANNetmask              string   `json:"wan_netmask,omitempty"`             // ^((128|192|224|240|248|252|254)\.0\.0\.0)|(255\.(((0|128|192|224|240|248|252|254)\.0\.0)|(255\.(((0|128|192|224|240|248|252|254)\.0)|255\.(0|128|192|224|240|248|252|254)))))$
	WANNetworkGroup         string   `json:"wan_networkgroup,omitempty"`        // WAN[2]?|WAN_LTE_FAILOVER
	WANPrefixlen            int      `json:"wan_prefixlen,omitempty"`           // ^([1-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-8])$|^$
	WANSmartqDownRate       int      `json:"wan_smartq_down_rate,omitempty"`    // [0-9]{1,6}|1000000
	WANSmartqEnabled        bool     `json:"wan_smartq_enabled"`
	WANSmartqUpRate         int      `json:"wan_smartq_up_rate,omitempty"` // [0-9]{1,6}|1000000
	WANType                 string   `json:"wan_type,omitempty"`           // disabled|dhcp|static|pppoe
	WANTypeV6               string   `json:"wan_type_v6,omitempty"`        // disabled|dhcpv6|static
	WANUsername             string   `json:"wan_username,omitempty"`       // [^"' ]+
	WANVLAN                 int      `json:"wan_vlan,omitempty"`           // [0-9]|[1-9][0-9]{1,2}|[1-3][0-9]{3}|40[0-8][0-9]|409[0-4]|^$
	WANVLANEnabled          bool     `json:"wan_vlan_enabled"`
	XIPSecPreSharedKey      string   `json:"x_ipsec_pre_shared_key,omitempty"`      // [^\"\' ]+
	XOpenVPNSharedSecretKey string   `json:"x_openvpn_shared_secret_key,omitempty"` // [0-9A-Fa-f]{512}
	XPptpcPassword          string   `json:"x_pptpc_password,omitempty"`            // [^\"\' ]+
	XWANPassword            string   `json:"x_wan_password,omitempty"`              // [^"' ]+
}

func (*Network) UnmarshalJSON

func (dst *Network) UnmarshalJSON(b []byte) error

type NotFoundError

type NotFoundError struct{}

func (*NotFoundError) Error

func (err *NotFoundError) Error() string

type PortForward

type PortForward struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	DestinationIP string `json:"destination_ip,omitempty"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^any$
	DstPort       string `json:"dst_port,omitempty"`       // (([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])|([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])-([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5]))+(,([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])|,([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])-([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])){0,14}
	Enabled       bool   `json:"enabled"`
	Fwd           string `json:"fwd,omitempty"`      // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
	FwdPort       string `json:"fwd_port,omitempty"` // (([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])|([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])-([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5]))+(,([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])|,([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])-([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])){0,14}
	Log           bool   `json:"log"`
	Name          string `json:"name,omitempty"`           // .{1,128}
	PfwdInterface string `json:"pfwd_interface,omitempty"` // wan|wan2|both
	Proto         string `json:"proto,omitempty"`          // tcp_udp|tcp|udp
	Src           string `json:"src,omitempty"`            // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])-(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([0-9]|[1-2][0-9]|3[0-2])$|^!(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^!(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])-(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^!(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([0-9]|[1-2][0-9]|3[0-2])$|^any$
}

type PortProfile

type PortProfile struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Autoneg                      bool     `json:"autoneg"`
	Dot1XCtrl                    string   `json:"dot1x_ctrl,omitempty"`             // auto|force_authorized|force_unauthorized|mac_based|multi_host
	Dot1XIDleTimeout             int      `json:"dot1x_idle_timeout,omitempty"`     // [0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]
	EgressRateLimitKbps          int      `json:"egress_rate_limit_kbps,omitempty"` // 6[4-9]|[7-9][0-9]|[1-9][0-9]{2,6}
	EgressRateLimitKbpsEnabled   bool     `json:"egress_rate_limit_kbps_enabled"`
	Forward                      string   `json:"forward,omitempty"` // all|native|customize|disabled
	FullDuplex                   bool     `json:"full_duplex"`
	Isolation                    bool     `json:"isolation"`
	LldpmedEnabled               bool     `json:"lldpmed_enabled"`
	LldpmedNotifyEnabled         bool     `json:"lldpmed_notify_enabled"`
	NATiveNetworkID              string   `json:"native_networkconf_id"`
	Name                         string   `json:"name,omitempty"`
	OpMode                       string   `json:"op_mode,omitempty"`  // switch
	PoeMode                      string   `json:"poe_mode,omitempty"` // auto|pasv24|passthrough|off
	PortSecurityEnabled          bool     `json:"port_security_enabled"`
	PortSecurityMACAddress       []string `json:"port_security_mac_address,omitempty"` // ^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$
	PriorityQueue1Level          int      `json:"priority_queue1_level,omitempty"`     // [0-9]|[1-9][0-9]|100
	PriorityQueue2Level          int      `json:"priority_queue2_level,omitempty"`     // [0-9]|[1-9][0-9]|100
	PriorityQueue3Level          int      `json:"priority_queue3_level,omitempty"`     // [0-9]|[1-9][0-9]|100
	PriorityQueue4Level          int      `json:"priority_queue4_level,omitempty"`     // [0-9]|[1-9][0-9]|100
	Speed                        int      `json:"speed,omitempty"`                     // 10|100|1000|2500|5000|10000|20000|25000|40000|50000|100000
	StormctrlBroadcastastEnabled bool     `json:"stormctrl_bcast_enabled"`
	StormctrlBroadcastastLevel   int      `json:"stormctrl_bcast_level,omitempty"` // [0-9]|[1-9][0-9]|100
	StormctrlBroadcastastRate    int      `json:"stormctrl_bcast_rate,omitempty"`  // [0-9]|[1-9][0-9]{1,6}|1[0-3][0-9]{6}|14[0-7][0-9]{5}|148[0-7][0-9]{4}|14880000
	StormctrlMcastEnabled        bool     `json:"stormctrl_mcast_enabled"`
	StormctrlMcastLevel          int      `json:"stormctrl_mcast_level,omitempty"` // [0-9]|[1-9][0-9]|100
	StormctrlMcastRate           int      `json:"stormctrl_mcast_rate,omitempty"`  // [0-9]|[1-9][0-9]{1,6}|1[0-3][0-9]{6}|14[0-7][0-9]{5}|148[0-7][0-9]{4}|14880000
	StormctrlType                string   `json:"stormctrl_type,omitempty"`        // level|rate
	StormctrlUcastEnabled        bool     `json:"stormctrl_ucast_enabled"`
	StormctrlUcastLevel          int      `json:"stormctrl_ucast_level,omitempty"` // [0-9]|[1-9][0-9]|100
	StormctrlUcastRate           int      `json:"stormctrl_ucast_rate,omitempty"`  // [0-9]|[1-9][0-9]{1,6}|1[0-3][0-9]{6}|14[0-7][0-9]{5}|148[0-7][0-9]{4}|14880000
	StpPortMode                  bool     `json:"stp_port_mode"`
	TaggedNetworkIDs             []string `json:"tagged_networkconf_ids,omitempty"`
	VoiceNetworkID               string   `json:"voice_networkconf_id"`
}

type RADIUSProfile

type RADIUSProfile struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	AccountingEnabled bool `json:"accounting_enabled"`
	AcctServers       []struct {
		IP      string `json:"ip,omitempty"`   // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
		Port    int    `json:"port,omitempty"` // ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])$|^$
		XSecret string `json:"x_secret,omitempty"`
	} `json:"acct_servers,omitempty"`
	AuthServers []struct {
		IP      string `json:"ip,omitempty"`   // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
		Port    int    `json:"port,omitempty"` // ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5])$|^$
		XSecret string `json:"x_secret,omitempty"`
	} `json:"auth_servers,omitempty"`
	InterimUpdateEnabled  bool   `json:"interim_update_enabled"`
	InterimUpdateInterval int    `json:"interim_update_interval,omitempty"` // ^([6-9][0-9]|[1-9][0-9]{2,3}|[1-7][0-9]{4}|8[0-5][0-9]{3}|86[0-3][0-9][0-9]|86400)$
	Name                  string `json:"name,omitempty"`                    // .{1,128}
	UseUsgAcctServer      bool   `json:"use_usg_acct_server"`
	UseUsgAuthServer      bool   `json:"use_usg_auth_server"`
	VLANEnabled           bool   `json:"vlan_enabled"`
	VLANWLANMode          string `json:"vlan_wlan_mode,omitempty"` // disabled|optional|required
}

type Routing

type Routing struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Enabled              bool   `json:"enabled"`
	Name                 string `json:"name,omitempty"`                  // .{1,128}
	StaticRouteDistance  int    `json:"static-route_distance,omitempty"` // ^[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]$|^$
	StaticRouteInterface string `json:"static-route_interface"`          // WAN1|WAN2|[\d\w]+|^$
	StaticRouteNetwork   string `json:"static-route_network,omitempty"`  // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2][0-9]|3[0-2])$|^([a-fA-F0-9:]+\/(([1-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-8])))$
	StaticRouteNexthop   string `json:"static-route_nexthop"`            // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^([a-fA-F0-9:]+)$|^$
	StaticRouteType      string `json:"static-route_type,omitempty"`     // nexthop-route|interface-route|blackhole
	Type                 string `json:"type,omitempty"`                  // static-route
}

type ScheduleTask

type ScheduleTask struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Action                  string `json:"action,omitempty"` // stream|upgrade
	AdditionalSoundsEnabled bool   `json:"additional_sounds_enabled"`
	BroadcastgroupID        string `json:"broadcastgroup_id"`
	CronExpr                string `json:"cron_expr,omitempty"`
	ExecuteOnlyOnce         bool   `json:"execute_only_once"`
	MediafileID             string `json:"mediafile_id"`
	Name                    string `json:"name,omitempty"`
	SampleFilename          string `json:"sample_filename,omitempty"`
	StreamType              string `json:"stream_type,omitempty"` // media|sample
	UpgradeTargets          []struct {
		MAC string `json:"mac,omitempty"` // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$
	} `json:"upgrade_targets,omitempty"`
}

type Setting

type Setting struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`
	Key    string `json:"key"`
}

type SettingAutoSpeedtest

type SettingAutoSpeedtest struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Enabled  bool `json:"enabled"`
	Interval int  `json:"interval,omitempty"` // ^(1[2-9]|[2-9][0-9]|[1-9][0-9]{2,3})$
}

type SettingBaresip

type SettingBaresip struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Enabled       bool   `json:"enabled"`
	OutboundProxy string `json:"outbound_proxy,omitempty"`
	PackageUrl    string `json:"package_url,omitempty"`
	Server        string `json:"server,omitempty"`
}

type SettingBroadcast

type SettingBroadcast struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	SoundAfterEnabled   bool   `json:"sound_after_enabled"`
	SoundAfterResource  string `json:"sound_after_resource,omitempty"`
	SoundAfterType      string `json:"sound_after_type,omitempty"` // sample|media
	SoundBeforeEnabled  bool   `json:"sound_before_enabled"`
	SoundBeforeResource string `json:"sound_before_resource,omitempty"`
	SoundBeforeType     string `json:"sound_before_type,omitempty"` // sample|media
}

type SettingConnectivity

type SettingConnectivity struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	EnableIsolatedWLAN bool   `json:"enable_isolated_wlan"`
	Enabled            bool   `json:"enabled"`
	UplinkHost         string `json:"uplink_host,omitempty"`
	UplinkType         string `json:"uplink_type,omitempty"`
	XMeshEssid         string `json:"x_mesh_essid,omitempty"`
	XMeshPsk           string `json:"x_mesh_psk,omitempty"`
}

type SettingCountry

type SettingCountry struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Code int `json:"code,omitempty"`
}

type SettingDpi

type SettingDpi struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Enabled               bool `json:"enabled"`
	FingerprintingEnabled bool `json:"fingerprintingEnabled"`
}

type SettingElementAdopt

type SettingElementAdopt struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Enabled       bool   `json:"enabled"`
	XElementEssid string `json:"x_element_essid,omitempty"`
	XElementPsk   string `json:"x_element_psk,omitempty"`
}

type SettingGuestAccess

type SettingGuestAccess struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	AllowedSubnet                          string   `json:"allowed_subnet_,omitempty"`
	Auth                                   string   `json:"auth,omitempty"` // none|hotspot|facebook_wifi|custom
	AuthorizeUseSandbox                    bool     `json:"authorize_use_sandbox"`
	CustomIP                               string   `json:"custom_ip"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	EcEnabled                              bool     `json:"ec_enabled"`
	Expire                                 string   `json:"expire,omitempty"`        // [\d]+|custom
	ExpireNumber                           int      `json:"expire_number,omitempty"` // ^[1-9][0-9]{0,5}|1000000$
	ExpireUnit                             int      `json:"expire_unit,omitempty"`   // 1|60|1440
	FacebookAppID                          string   `json:"facebook_app_id"`
	FacebookEnabled                        bool     `json:"facebook_enabled"`
	FacebookScopeEmail                     bool     `json:"facebook_scope_email"`
	FacebookWifiBlockHttps                 bool     `json:"facebook_wifi_block_https"`
	FacebookWifiGwID                       string   `json:"facebook_wifi_gw_id"`
	FacebookWifiGwName                     string   `json:"facebook_wifi_gw_name,omitempty"`
	Gateway                                string   `json:"gateway,omitempty"` // paypal|stripe|authorize|quickpay|merchantwarrior|ippay
	GoogleClientID                         string   `json:"google_client_id"`
	GoogleDomain                           string   `json:"google_domain,omitempty"`
	GoogleEnabled                          bool     `json:"google_enabled"`
	GoogleScopeEmail                       bool     `json:"google_scope_email"`
	IPpayUseSandbox                        bool     `json:"ippay_use_sandbox"`
	MerchantwarriorUseSandbox              bool     `json:"merchantwarrior_use_sandbox"`
	PasswordEnabled                        bool     `json:"password_enabled"`
	PaymentEnabled                         bool     `json:"payment_enabled"`
	PaypalUseSandbox                       bool     `json:"paypal_use_sandbox"`
	PortalCustomized                       bool     `json:"portal_customized"`
	PortalCustomizedBgColor                string   `json:"portal_customized_bg_color"` // ^#[a-zA-Z0-9]{6}$|^#[a-zA-Z0-9]{3}$|^$
	PortalCustomizedBgImageEnabled         bool     `json:"portal_customized_bg_image_enabled"`
	PortalCustomizedBgImageFilename        string   `json:"portal_customized_bg_image_filename,omitempty"`
	PortalCustomizedBgImageTile            bool     `json:"portal_customized_bg_image_tile"`
	PortalCustomizedBoxColor               string   `json:"portal_customized_box_color"`             // ^#[a-zA-Z0-9]{6}$|^#[a-zA-Z0-9]{3}$|^$
	PortalCustomizedBoxLinkColor           string   `json:"portal_customized_box_link_color"`        // ^#[a-zA-Z0-9]{6}$|^#[a-zA-Z0-9]{3}$|^$
	PortalCustomizedBoxOpacity             int      `json:"portal_customized_box_opacity,omitempty"` // ^[1-9][0-9]?$|^100$|^$
	PortalCustomizedBoxTextColor           string   `json:"portal_customized_box_text_color"`        // ^#[a-zA-Z0-9]{6}$|^#[a-zA-Z0-9]{3}$|^$
	PortalCustomizedButtonColor            string   `json:"portal_customized_button_color"`          // ^#[a-zA-Z0-9]{6}$|^#[a-zA-Z0-9]{3}$|^$
	PortalCustomizedButtonTextColor        string   `json:"portal_customized_button_text_color"`     // ^#[a-zA-Z0-9]{6}$|^#[a-zA-Z0-9]{3}$|^$
	PortalCustomizedLanguages              []string `json:"portal_customized_languages,omitempty"`   // ^[a-z]{2}(_[A-Z]{2})*$
	PortalCustomizedLinkColor              string   `json:"portal_customized_link_color"`            // ^#[a-zA-Z0-9]{6}$|^#[a-zA-Z0-9]{3}$|^$
	PortalCustomizedLogoEnabled            bool     `json:"portal_customized_logo_enabled"`
	PortalCustomizedLogoFilename           string   `json:"portal_customized_logo_filename,omitempty"`
	PortalCustomizedTextColor              string   `json:"portal_customized_text_color"` // ^#[a-zA-Z0-9]{6}$|^#[a-zA-Z0-9]{3}$|^$
	PortalCustomizedTitle                  string   `json:"portal_customized_title,omitempty"`
	PortalCustomizedTos                    string   `json:"portal_customized_tos,omitempty"`
	PortalCustomizedTosEnabled             bool     `json:"portal_customized_tos_enabled"`
	PortalCustomizedUnsplashAuthorName     string   `json:"portal_customized_unsplash_author_name,omitempty"`
	PortalCustomizedUnsplashAuthorUsername string   `json:"portal_customized_unsplash_author_username,omitempty"`
	PortalCustomizedWelcomeText            string   `json:"portal_customized_welcome_text,omitempty"`
	PortalCustomizedWelcomeTextEnabled     bool     `json:"portal_customized_welcome_text_enabled"`
	PortalCustomizedWelcomeTextPosition    string   `json:"portal_customized_welcome_text_position,omitempty"` // under_logo|above_boxes
	PortalEnabled                          bool     `json:"portal_enabled"`
	PortalHostname                         string   `json:"portal_hostname"` // ^[a-zA-Z0-9.-]+$|^$
	PortalUseHostname                      bool     `json:"portal_use_hostname"`
	QuickpayTestmode                       bool     `json:"quickpay_testmode"`
	RADIUSAuthType                         string   `json:"radius_auth_type,omitempty"` // chap|mschapv2
	RADIUSDisconnectEnabled                bool     `json:"radius_disconnect_enabled"`
	RADIUSDisconnectPort                   int      `json:"radius_disconnect_port,omitempty"` // [1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5]
	RADIUSEnabled                          bool     `json:"radius_enabled"`
	RADIUSProfileID                        string   `json:"radiusprofile_id"`
	RedirectEnabled                        bool     `json:"redirect_enabled"`
	RedirectHttps                          bool     `json:"redirect_https"`
	RedirectToHttps                        bool     `json:"redirect_to_https"`
	RedirectUrl                            string   `json:"redirect_url,omitempty"`
	RestrictedDNSEnabled                   bool     `json:"restricted_dns_enabled"`
	RestrictedDNSServers                   []string `json:"restricted_dns_servers,omitempty"` // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	RestrictedSubnet                       string   `json:"restricted_subnet_,omitempty"`
	TemplateEngine                         string   `json:"template_engine,omitempty"` // jsp|angular
	VoucherCustomized                      bool     `json:"voucher_customized"`
	VoucherEnabled                         bool     `json:"voucher_enabled"`
	WechatAppID                            string   `json:"wechat_app_id"`
	WechatEnabled                          bool     `json:"wechat_enabled"`
	WechatShopID                           string   `json:"wechat_shop_id"`
	XAuthorizeLoginid                      string   `json:"x_authorize_loginid,omitempty"`
	XAuthorizeTransactionkey               string   `json:"x_authorize_transactionkey,omitempty"`
	XFacebookAppSecret                     string   `json:"x_facebook_app_secret,omitempty"`
	XFacebookWifiGwSecret                  string   `json:"x_facebook_wifi_gw_secret,omitempty"`
	XGoogleClientSecret                    string   `json:"x_google_client_secret,omitempty"`
	XIPpayTerminalid                       string   `json:"x_ippay_terminalid,omitempty"`
	XMerchantwarriorApikey                 string   `json:"x_merchantwarrior_apikey,omitempty"`
	XMerchantwarriorApipassphrase          string   `json:"x_merchantwarrior_apipassphrase,omitempty"`
	XMerchantwarriorMerchantuuid           string   `json:"x_merchantwarrior_merchantuuid,omitempty"`
	XPassword                              string   `json:"x_password,omitempty"`
	XPaypalPassword                        string   `json:"x_paypal_password,omitempty"`
	XPaypalSignature                       string   `json:"x_paypal_signature,omitempty"`
	XPaypalUsername                        string   `json:"x_paypal_username,omitempty"`
	XQuickpayAgreementid                   string   `json:"x_quickpay_agreementid,omitempty"`
	XQuickpayApikey                        string   `json:"x_quickpay_apikey,omitempty"`
	XQuickpayMerchantid                    string   `json:"x_quickpay_merchantid,omitempty"`
	XStripeApiKey                          string   `json:"x_stripe_api_key,omitempty"`
	XWechatAppSecret                       string   `json:"x_wechat_app_secret,omitempty"`
	XWechatSecretKey                       string   `json:"x_wechat_secret_key,omitempty"`
}

type SettingIps

type SettingIps struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	DNSFiltering bool `json:"dns_filtering"`
	DNSFilters   []struct {
		AllowedSites []string `json:"allowed_sites,omitempty"` // ^[a-zA-Z0-9.-]+$|^$
		BlockedSites []string `json:"blocked_sites,omitempty"` // ^[a-zA-Z0-9.-]+$|^$
		BlockedTld   []string `json:"blocked_tld,omitempty"`   // ^[a-zA-Z0-9.-]+$|^$
		Description  string   `json:"description,omitempty"`
		Filter       string   `json:"filter,omitempty"` // none|work|family
		Name         string   `json:"name,omitempty"`
		NetworkID    string   `json:"network_id"`
		Version      string   `json:"version,omitempty"` // v4|v6
	} `json:"dns_filters,omitempty"`
	EnabledCategories []string `json:"enabled_categories,omitempty"` // emerging-activex|emerging-attackresponse|botcc|emerging-chat|ciarmy|compromised|emerging-dns|emerging-dos|dshield|emerging-exploit|emerging-ftp|emerging-games|emerging-icmp|emerging-icmpinfo|emerging-imap|emerging-inappropriate|emerging-info|emerging-malware|emerging-misc|emerging-mobile|emerging-netbios|emerging-p2p|emerging-policy|emerging-pop3|emerging-rpc|emerging-scada|emerging-scan|emerging-shellcode|emerging-smtp|emerging-snmp|emerging-sql|emerging-telnet|emerging-tftp|tor|emerging-trojan|emerging-useragent|emerging-voip|emerging-webapps|emerging-webclient|emerging-webserver|emerging-worm
	EndpointScanning  bool     `json:"endpoint_scanning"`
	Honeypot          []struct {
		IPAddress string `json:"ip_address,omitempty"`
		NetworkID string `json:"network_id"`
		Version   string `json:"version,omitempty"` // v4|v6
	} `json:"honeypot,omitempty"`
	HoneypotEnabled     bool   `json:"honeypot_enabled"`
	IPsMode             string `json:"ips_mode,omitempty"` // ids|ips|ipsInline|disabled
	RestrictIPAddresses bool   `json:"restrict_ip_addresses"`
	RestrictTor         bool   `json:"restrict_tor"`
	RestrictTorrents    bool   `json:"restrict_torrents"`
	Suppression         struct {
		Alerts []struct {
			Category  string `json:"category,omitempty"`
			Gid       int    `json:"gid,omitempty"`
			ID        int    `json:"id,omitempty"`
			Signature string `json:"signature,omitempty"`
			Tracking  []struct {
				Direction string `json:"direction,omitempty"` // both|src|dest
				Mode      string `json:"mode,omitempty"`      // ip|subnet|network
				Value     string `json:"value,omitempty"`
			} `json:"tracking,omitempty"`
			Type string `json:"type,omitempty"` // all|track
		} `json:"alerts,omitempty"`
		Whitelist []struct {
			Direction string `json:"direction,omitempty"` // both|src|dest
			Mode      string `json:"mode,omitempty"`      // ip|subnet|network
			Value     string `json:"value,omitempty"`
		} `json:"whitelist,omitempty"`
	} `json:"suppression,omitempty"`
}

type SettingLcm

type SettingLcm struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Brightness  int  `json:"brightness,omitempty"` // [1-9]|[1-9][0-9]|100
	Enabled     bool `json:"enabled"`
	IDleTimeout int  `json:"idle_timeout,omitempty"` // [1-9][0-9]|[1-9][0-9][0-9]|[1-2][0-9][0-9][0-9]|3[0-5][0-9][0-9]|3600
	Sync        bool `json:"sync"`
	TouchEvent  bool `json:"touch_event"`
}

type SettingLocale

type SettingLocale struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Timezone string `json:"timezone,omitempty"`
}

type SettingMgmt

type SettingMgmt struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	AdvancedFeatureEnabled  bool     `json:"advanced_feature_enabled"`
	AlertEnabled            bool     `json:"alert_enabled"`
	AutoUpgrade             bool     `json:"auto_upgrade"`
	BootSound               bool     `json:"boot_sound"`
	LedEnabled              bool     `json:"led_enabled"`
	OutdoorModeEnabled      bool     `json:"outdoor_mode_enabled"`
	UnifiIDpEnabled         bool     `json:"unifi_idp_enabled"`
	WifimanEnabled          bool     `json:"wifiman_enabled"`
	XMgmtKey                string   `json:"x_mgmt_key,omitempty"` // [0-9a-f]{32}
	XSshAuthPasswordEnabled bool     `json:"x_ssh_auth_password_enabled"`
	XSshBindWildcard        bool     `json:"x_ssh_bind_wildcard"`
	XSshEnabled             bool     `json:"x_ssh_enabled"`
	XSshKeys                []string `json:"x_ssh_keys,omitempty"`
	XSshMd5Passwd           string   `json:"x_ssh_md5passwd,omitempty"`
	XSshPassword            string   `json:"x_ssh_password,omitempty"` // .{1,128}
	XSshSha512Passwd        string   `json:"x_ssh_sha512passwd,omitempty"`
	XSshUsername            string   `json:"x_ssh_username,omitempty"` // ^[_A-Za-z0-9][-_.A-Za-z0-9]{0,29}$
}

type SettingNetworkOptimization

type SettingNetworkOptimization struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Enabled bool `json:"enabled"`
}

type SettingNtp

type SettingNtp struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	NtpServer1 string `json:"ntp_server_1,omitempty"`
	NtpServer2 string `json:"ntp_server_2,omitempty"`
	NtpServer3 string `json:"ntp_server_3,omitempty"`
	NtpServer4 string `json:"ntp_server_4,omitempty"`
}

type SettingPorta

type SettingPorta struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Ugw3WAN2Enabled bool `json:"ugw3_wan2_enabled"`
}

type SettingProviderCapabilities

type SettingProviderCapabilities struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Download int  `json:"download,omitempty"` // ^[1-9][0-9]*$
	Enabled  bool `json:"enabled"`
	Upload   int  `json:"upload,omitempty"` // ^[1-9][0-9]*$
}

type SettingRadioAi

type SettingRadioAi struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	ChannelsNa     []int    `json:"channels_na,omitempty"` // 36|40|44|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140|144|149|153|157|161|165
	ChannelsNg     []int    `json:"channels_ng,omitempty"` // 1|2|3|4|5|6|7|8|9|10|11|12|13|14
	CronExpr       string   `json:"cron_expr,omitempty"`
	Default        bool     `json:"default"`
	Enabled        bool     `json:"enabled"`
	ExcludeDevices []string `json:"exclude_devices,omitempty"` // ([0-9a-z]{2}:){5}[0-9a-z]{2}
	HtModesNa      []int    `json:"ht_modes_na,omitempty"`     // ^(20|40|80|160)$
	HtModesNg      []int    `json:"ht_modes_ng,omitempty"`     // ^(20|40)$
	Optimize       []string `json:"optimize,omitempty"`        // channel|power
	Radios         []string `json:"radios,omitempty"`          // na|ng
	UseXY          bool     `json:"useXY"`
}

type SettingRadius

type SettingRadius struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	AccountingEnabled     bool   `json:"accounting_enabled"`
	AcctPort              int    `json:"acct_port,omitempty"` // [1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5]
	AuthPort              int    `json:"auth_port,omitempty"` // [1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5]
	ConfigureWholeNetwork bool   `json:"configure_whole_network"`
	Enabled               bool   `json:"enabled"`
	InterimUpdateInterval int    `json:"interim_update_interval,omitempty"` // ^([6-9][0-9]|[1-9][0-9]{2,3}|[1-7][0-9]{4}|8[0-5][0-9]{3}|86[0-3][0-9][0-9]|86400)$
	TunneledReply         bool   `json:"tunneled_reply"`
	XSecret               string `json:"x_secret,omitempty"` // [^\"\' ]{1,48}
}

type SettingRsyslogd

type SettingRsyslogd struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Debug                       bool   `json:"debug"`
	Enabled                     bool   `json:"enabled"`
	IP                          string `json:"ip,omitempty"`
	NetconsoleEnabled           bool   `json:"netconsole_enabled"`
	NetconsoleHost              string `json:"netconsole_host,omitempty"`
	NetconsolePort              int    `json:"netconsole_port,omitempty"` // [1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5]
	Port                        int    `json:"port,omitempty"`            // [1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5]
	ThisController              bool   `json:"this_controller"`
	ThisControllerEncryptedOnly bool   `json:"this_controller_encrypted_only"`
}

type SettingSnmp

type SettingSnmp struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Community string `json:"community,omitempty"` // .{1,256}
	Enabled   bool   `json:"enabled"`
	EnabledV3 bool   `json:"enabledV3"`
	Username  string `json:"username,omitempty"`   // [a-zA-Z0-9_-]{1,30}
	XPassword string `json:"x_password,omitempty"` // [^'"]{8,32}
}

type SettingSuperCloudaccess

type SettingSuperCloudaccess struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	DeviceAuth      string `json:"device_auth,omitempty"`
	DeviceID        string `json:"device_id"`
	Enabled         bool   `json:"enabled"`
	UbicUuid        string `json:"ubic_uuid,omitempty"`
	XCertificateArn string `json:"x_certificate_arn,omitempty"`
	XCertificatePem string `json:"x_certificate_pem,omitempty"`
	XPrivateKey     string `json:"x_private_key,omitempty"`
}

type SettingSuperEvents

type SettingSuperEvents struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Ignored string `json:"_ignored,omitempty"`
}

type SettingSuperFwupdate

type SettingSuperFwupdate struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	ControllerChannel string `json:"controller_channel,omitempty"` // internal|alpha|beta|release-candidate|release
	FirmwareChannel   string `json:"firmware_channel,omitempty"`   // internal|alpha|beta|release-candidate|release
	SsoEnabled        bool   `json:"sso_enabled"`
}

type SettingSuperIdentity

type SettingSuperIdentity struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Hostname string `json:"hostname,omitempty"`
	Name     string `json:"name,omitempty"`
}

type SettingSuperMail

type SettingSuperMail struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Provider string `json:"provider,omitempty"` // smtp|cloud|disabled
}

type SettingSuperMgmt

type SettingSuperMgmt struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	AnalyticsDisapprovedFor                  string   `json:"analytics_disapproved_for,omitempty"`
	AutoUpgrade                              bool     `json:"auto_upgrade"`
	AutobackupCronExpr                       string   `json:"autobackup_cron_expr,omitempty"`
	AutobackupDays                           int      `json:"autobackup_days,omitempty"`
	AutobackupEnabled                        bool     `json:"autobackup_enabled"`
	AutobackupGcsBucket                      string   `json:"autobackup_gcs_bucket,omitempty"`
	AutobackupGcsCertificatePath             string   `json:"autobackup_gcs_certificate_path,omitempty"`
	AutobackupLocalPath                      string   `json:"autobackup_local_path,omitempty"`
	AutobackupMaxFiles                       int      `json:"autobackup_max_files,omitempty"`
	AutobackupPostActions                    []string `json:"autobackup_post_actions,omitempty"` // copy_local|copy_s3|copy_gcs|copy_cloud
	AutobackupS3AccessKey                    string   `json:"autobackup_s3_access_key,omitempty"`
	AutobackupS3AccessSecret                 string   `json:"autobackup_s3_access_secret,omitempty"`
	AutobackupS3Bucket                       string   `json:"autobackup_s3_bucket,omitempty"`
	AutobackupTimezone                       string   `json:"autobackup_timezone,omitempty"`
	BackupToCloudEnabled                     bool     `json:"backup_to_cloud_enabled"`
	ContactInfoCity                          string   `json:"contact_info_city,omitempty"`
	ContactInfoCompanyName                   string   `json:"contact_info_company_name,omitempty"`
	ContactInfoCountry                       string   `json:"contact_info_country,omitempty"`
	ContactInfoFullName                      string   `json:"contact_info_full_name,omitempty"`
	ContactInfoPhoneNumber                   string   `json:"contact_info_phone_number,omitempty"`
	ContactInfoShippingAddress1              string   `json:"contact_info_shipping_address_1,omitempty"`
	ContactInfoShippingAddress2              string   `json:"contact_info_shipping_address_2,omitempty"`
	ContactInfoState                         string   `json:"contact_info_state,omitempty"`
	ContactInfoZip                           string   `json:"contact_info_zip,omitempty"`
	DataRetentionTimeEnabled                 bool     `json:"data_retention_time_enabled"`
	DataRetentionTimeInHoursFor5minutesScale int      `json:"data_retention_time_in_hours_for_5minutes_scale,omitempty"`
	DataRetentionTimeInHoursForDailyScale    int      `json:"data_retention_time_in_hours_for_daily_scale,omitempty"`
	DataRetentionTimeInHoursForHourlyScale   int      `json:"data_retention_time_in_hours_for_hourly_scale,omitempty"`
	DataRetentionTimeInHoursForMonthlyScale  int      `json:"data_retention_time_in_hours_for_monthly_scale,omitempty"`
	DataRetentionTimeInHoursForOthers        int      `json:"data_retention_time_in_hours_for_others,omitempty"`
	DefaultSiteDeviceAuthPasswordAlert       string   `json:"default_site_device_auth_password_alert,omitempty"` // false
	Discoverable                             bool     `json:"discoverable"`
	EnableAnalytics                          bool     `json:"enable_analytics"`
	GoogleMapsApiKey                         string   `json:"google_maps_api_key,omitempty"`
	ImageMapsUseGoogleEngine                 bool     `json:"image_maps_use_google_engine"`
	LedEnabled                               bool     `json:"led_enabled"`
	LiveChat                                 string   `json:"live_chat,omitempty"`    // disabled|super-only|everyone
	LiveUpdates                              string   `json:"live_updates,omitempty"` // disabled|live|auto
	MinimumUsableHdSpace                     int      `json:"minimum_usable_hd_space,omitempty"`
	MinimumUsableSdSpace                     int      `json:"minimum_usable_sd_space,omitempty"`
	OverrideInformHost                       bool     `json:"override_inform_host"`
	StoreEnabled                             string   `json:"store_enabled,omitempty"` // disabled|super-only|everyone
	TimeSeriesPerClientStatsEnabled          bool     `json:"time_series_per_client_stats_enabled"`
	XSshPassword                             string   `json:"x_ssh_password,omitempty"`
	XSshUsername                             string   `json:"x_ssh_username,omitempty"`
}

type SettingSuperSdn

type SettingSuperSdn struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	AuthToken         string   `json:"auth_token,omitempty"`
	DeviceID          string   `json:"device_id"`
	Enabled           bool     `json:"enabled"`
	Migrated          bool     `json:"migrated"`
	OauthAppID        string   `json:"oauth_app_id"`
	OauthEnabled      bool     `json:"oauth_enabled"`
	OauthRedirectUris []string `json:"oauth_redirect_uris,omitempty"`
	SsoLoginEnabled   string   `json:"sso_login_enabled,omitempty"`
	UbicUuid          string   `json:"ubic_uuid,omitempty"`
	XOauthAppSecret   string   `json:"x_oauth_app_secret,omitempty"`
}

type SettingSuperSmtp

type SettingSuperSmtp struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	Enabled   bool   `json:"enabled"`
	Host      string `json:"host,omitempty"`
	Port      int    `json:"port,omitempty"` // [1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5]|^$
	Sender    string `json:"sender,omitempty"`
	UseAuth   bool   `json:"use_auth"`
	UseSender bool   `json:"use_sender"`
	UseSsl    bool   `json:"use_ssl"`
	Username  string `json:"username,omitempty"`
	XPassword string `json:"x_password,omitempty"`
}

type SettingUsg

type SettingUsg struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	ArpCacheBaseReachable          int    `json:"arp_cache_base_reachable,omitempty"` // ^$|^[1-9]{1}[0-9]{0,4}$
	ArpCacheTimeout                string `json:"arp_cache_timeout,omitempty"`        // normal|min-dhcp-lease|custom
	BroadcastPing                  bool   `json:"broadcast_ping"`
	DHCPDHostfileUpdate            bool   `json:"dhcpd_hostfile_update"`
	DHCPDUseDNSmasq                bool   `json:"dhcpd_use_dnsmasq"`
	DHCPRelayAgentsPackets         string `json:"dhcp_relay_agents_packets"`      // append|discard|forward|replace|^$
	DHCPRelayHopCount              int    `json:"dhcp_relay_hop_count,omitempty"` // ([1-9]|[1-8][0-9]|9[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|^$
	DHCPRelayMaxSize               int    `json:"dhcp_relay_max_size,omitempty"`  // (6[4-9]|[7-9][0-9]|[1-8][0-9]{2}|9[0-8][0-9]|99[0-9]|1[0-3][0-9]{2}|1400)|^$
	DHCPRelayPort                  int    `json:"dhcp_relay_port,omitempty"`      // [1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-4][0-9]{3}|[6][5][0-4][0-9]{2}|[6][5][5][0-2][0-9]|[6][5][5][3][0-5]|^$
	DHCPRelayServer1               string `json:"dhcp_relay_server_1"`            // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPRelayServer2               string `json:"dhcp_relay_server_2"`            // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPRelayServer3               string `json:"dhcp_relay_server_3"`            // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPRelayServer4               string `json:"dhcp_relay_server_4"`            // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DHCPRelayServer5               string `json:"dhcp_relay_server_5"`            // ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DNSmasqAllServers              bool   `json:"dnsmasq_all_servers"`
	EchoServer                     string `json:"echo_server,omitempty"` // [^\"\' ]{1,255}
	FirewallGuestDefaultLog        bool   `json:"firewall_guest_default_log"`
	FirewallLanDefaultLog          bool   `json:"firewall_lan_default_log"`
	FirewallWANDefaultLog          bool   `json:"firewall_wan_default_log"`
	FtpModule                      bool   `json:"ftp_module"`
	GeoIPFilteringBlock            string `json:"geo_ip_filtering_block,omitempty"`     // block|allow
	GeoIPFilteringCountries        string `json:"geo_ip_filtering_countries,omitempty"` // ^([A-Z]{2})?(,[A-Z]{2}){0,149}$
	GeoIPFilteringEnabled          bool   `json:"geo_ip_filtering_enabled"`
	GeoIPFilteringTrafficDirection string `json:"geo_ip_filtering_traffic_direction,omitempty"` // ^(both|ingress|egress)$
	GreModule                      bool   `json:"gre_module"`
	H323Module                     bool   `json:"h323_module"`
	ICMPTimeout                    int    `json:"icmp_timeout,omitempty"`
	LldpEnableAll                  bool   `json:"lldp_enable_all"`
	MdnsEnabled                    bool   `json:"mdns_enabled"`
	MssClamp                       string `json:"mss_clamp,omitempty"`     // auto|custom|disabled
	MssClampMss                    int    `json:"mss_clamp_mss,omitempty"` // [1-9][0-9]{2,3}
	OffloadAccounting              bool   `json:"offload_accounting"`
	OffloadL2Blocking              bool   `json:"offload_l2_blocking"`
	OffloadSch                     bool   `json:"offload_sch"`
	OtherTimeout                   int    `json:"other_timeout,omitempty"`
	PptpModule                     bool   `json:"pptp_module"`
	ReceiveRedirects               bool   `json:"receive_redirects"`
	SendRedirects                  bool   `json:"send_redirects"`
	SipModule                      bool   `json:"sip_module"`
	SynCookies                     bool   `json:"syn_cookies"`
	TCPCloseTimeout                int    `json:"tcp_close_timeout,omitempty"`
	TCPCloseWaitTimeout            int    `json:"tcp_close_wait_timeout,omitempty"`
	TCPEstablishedTimeout          int    `json:"tcp_established_timeout,omitempty"`
	TCPFinWaitTimeout              int    `json:"tcp_fin_wait_timeout,omitempty"`
	TCPLastAckTimeout              int    `json:"tcp_last_ack_timeout,omitempty"`
	TCPSynRecvTimeout              int    `json:"tcp_syn_recv_timeout,omitempty"`
	TCPSynSentTimeout              int    `json:"tcp_syn_sent_timeout,omitempty"`
	TCPTimeWaitTimeout             int    `json:"tcp_time_wait_timeout,omitempty"`
	TFTPModule                     bool   `json:"tftp_module"`
	UDPOtherTimeout                int    `json:"udp_other_timeout,omitempty"`
	UDPStreamTimeout               int    `json:"udp_stream_timeout,omitempty"`
	UpnpEnabled                    bool   `json:"upnp_enabled"`
	UpnpNATPmpEnabled              bool   `json:"upnp_nat_pmp_enabled"`
	UpnpSecureMode                 bool   `json:"upnp_secure_mode"`
	UpnpWANInterface               string `json:"upnp_wan_interface,omitempty"` // WAN|WAN2
}

type SettingUsw

type SettingUsw struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Key string `json:"key"`

	DHCPSnoop bool `json:"dhcp_snoop"`
}

type Site

type Site struct {
	ID string `json:"_id,omitempty"`

	Name        string `json:"name"`
	Description string `json:"desc"`
}

type SpatialRecord

type SpatialRecord struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Devices []struct {
		MAC      string `json:"mac,omitempty"` // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$
		Position struct {
			X float64 `json:"x,omitempty"` // (^([-]?[\d]+)$)|(^([-]?[\d]+[.]?[\d]+)$)
			Y float64 `json:"y,omitempty"` // (^([-]?[\d]+)$)|(^([-]?[\d]+[.]?[\d]+)$)
			Z float64 `json:"z,omitempty"` // (^([-]?[\d]+)$)|(^([-]?[\d]+[.]?[\d]+)$)
		} `json:"position,omitempty"`
	} `json:"devices,omitempty"`
	Name string `json:"name,omitempty"` // .{1,128}
}

type Tag

type Tag struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	MemberTable []string `json:"member_table,omitempty"`
	Name        string   `json:"name,omitempty"`
}

type User

type User struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	IP string `json:"ip,omitempty"` // non-generated field

	Blocked     bool   `json:"blocked,omitempty"`
	FixedIP     string `json:"fixed_ip,omitempty"`
	Hostname    string `json:"hostname,omitempty"`
	LastSeen    int    `json:"last_seen,omitempty"`
	MAC         string `json:"mac,omitempty"` // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$
	Name        string `json:"name,omitempty"`
	NetworkID   string `json:"network_id"`
	Note        string `json:"note,omitempty"`
	UseFixedIP  bool   `json:"use_fixedip"`
	UserGroupID string `json:"usergroup_id"`
}

type UserGroup

type UserGroup struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Name           string `json:"name,omitempty"`              // .{1,128}
	QOSRateMaxDown int    `json:"qos_rate_max_down,omitempty"` // -1|[2-9]|[1-9][0-9]{1,4}|100000
	QOSRateMaxUp   int    `json:"qos_rate_max_up,omitempty"`   // -1|[2-9]|[1-9][0-9]{1,4}|100000
}

type VirtualDevice

type VirtualDevice struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	HeightInMeters float64 `json:"heightInMeters,omitempty"`
	Locked         bool    `json:"locked"`
	MapID          string  `json:"map_id"`
	Type           string  `json:"type,omitempty"` // uap|usg|usw
	X              string  `json:"x,omitempty"`
	Y              string  `json:"y,omitempty"`
}

type WLAN

type WLAN struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	ApGroupIDs                []string `json:"ap_group_ids,omitempty"`
	AuthCache                 bool     `json:"auth_cache"`
	BSupported                bool     `json:"b_supported"`
	BroadcastFilterEnabled    bool     `json:"bc_filter_enabled"`
	BroadcastFilterList       []string `json:"bc_filter_list,omitempty"` // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$
	BssTransition             bool     `json:"bss_transition"`
	CountryBeacon             bool     `json:"country_beacon"`
	DPIEnabled                bool     `json:"dpi_enabled"`
	DPIgroupID                string   `json:"dpigroup_id"`         // [\d\w]+|^$
	DTIMMode                  string   `json:"dtim_mode,omitempty"` // default|custom
	DTIMNa                    int      `json:"dtim_na,omitempty"`   // ^([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	DTIMNg                    int      `json:"dtim_ng,omitempty"`   // ^([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^$
	ElementAdopt              bool     `json:"element_adopt"`
	Enabled                   bool     `json:"enabled"`
	FastRoamingEnabled        bool     `json:"fast_roaming_enabled"`
	GroupRekey                int      `json:"group_rekey,omitempty"` // ^(0|[6-9][0-9]|[1-9][0-9]{2,3}|[1-7][0-9]{4}|8[0-5][0-9]{3}|86[0-3][0-9][0-9]|86400)$
	HideSSID                  bool     `json:"hide_ssid"`
	Hotspot2ConfEnabled       bool     `json:"hotspot2conf_enabled"`
	Hotspot2ConfID            string   `json:"hotspot2conf_id"`
	IappEnabled               bool     `json:"iapp_enabled"`
	IsGuest                   bool     `json:"is_guest"`
	L2Isolation               bool     `json:"l2_isolation"`
	MACFilterEnabled          bool     `json:"mac_filter_enabled"`
	MACFilterList             []string `json:"mac_filter_list,omitempty"`   // ^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$
	MACFilterPolicy           string   `json:"mac_filter_policy,omitempty"` // allow|deny
	MinrateNaAdvertisingRates bool     `json:"minrate_na_advertising_rates"`
	MinrateNaBeaconRateKbps   int      `json:"minrate_na_beacon_rate_kbps,omitempty"`
	MinrateNaDataRateKbps     int      `json:"minrate_na_data_rate_kbps,omitempty"`
	MinrateNaEnabled          bool     `json:"minrate_na_enabled"`
	MinrateNaMgmtRateKbps     int      `json:"minrate_na_mgmt_rate_kbps,omitempty"`
	MinrateNgAdvertisingRates bool     `json:"minrate_ng_advertising_rates"`
	MinrateNgBeaconRateKbps   int      `json:"minrate_ng_beacon_rate_kbps,omitempty"`
	MinrateNgCckRatesEnabled  bool     `json:"minrate_ng_cck_rates_enabled"`
	MinrateNgDataRateKbps     int      `json:"minrate_ng_data_rate_kbps,omitempty"`
	MinrateNgEnabled          bool     `json:"minrate_ng_enabled"`
	MinrateNgMgmtRateKbps     int      `json:"minrate_ng_mgmt_rate_kbps,omitempty"`
	MulticastEnhanceEnabled   bool     `json:"mcastenhance_enabled"`
	Name                      string   `json:"name,omitempty"` // .{1,32}
	NameCombineEnabled        bool     `json:"name_combine_enabled"`
	NameCombineSuffix         string   `json:"name_combine_suffix,omitempty"` // .{0,8}
	NetworkID                 string   `json:"networkconf_id"`
	No2GhzOui                 bool     `json:"no2ghz_oui"`
	P2P                       bool     `json:"p2p"`
	P2PCrossConnect           bool     `json:"p2p_cross_connect"`
	PMFMode                   string   `json:"pmf_mode,omitempty"` // disabled|optional|required
	Priority                  string   `json:"priority,omitempty"` // medium|high|low
	ProxyArp                  bool     `json:"proxy_arp"`
	RADIUSDasEnabled          bool     `json:"radius_das_enabled"`
	RADIUSMACAuthEnabled      bool     `json:"radius_mac_auth_enabled"`
	RADIUSMACaclEmptyPassword bool     `json:"radius_macacl_empty_password"`
	RADIUSMACaclFormat        string   `json:"radius_macacl_format,omitempty"` // none_lower|hyphen_lower|colon_lower|none_upper|hyphen_upper|colon_upper
	RADIUSProfileID           string   `json:"radiusprofile_id"`
	RoamClusterID             int      `json:"roam_cluster_id,omitempty"` // [0-9]|[1-2][0-9]|[3][0-1]|^$
	RrmEnabled                bool     `json:"rrm_enabled"`
	Schedule                  []string `json:"schedule,omitempty"` // (sun|mon|tue|wed|thu|fri|sat)(\-(sun|mon|tue|wed|thu|fri|sat))?\|([0-2][0-9][0-5][0-9])\-([0-2][0-9][0-5][0-9])
	ScheduleEnabled           bool     `json:"schedule_enabled"`
	ScheduleReversed          bool     `json:"schedule_reversed"`
	ScheduleWithDuration      []struct {
		DurationMinutes int      `json:"duration_minutes,omitempty"`   // ^[1-9][0-9]*$
		StartDaysOfWeek []string `json:"start_days_of_week,omitempty"` // ^(sun|mon|tue|wed|thu|fri|sat)$
		StartHour       int      `json:"start_hour,omitempty"`         // ^(1?[0-9])|(2[0-3])$
		StartMinute     int      `json:"start_minute,omitempty"`       // ^[0-5]?[0-9]$
	} `json:"schedule_with_duration,omitempty"`
	Security     string `json:"security,omitempty"` // open|wpapsk|wep|wpaeap|osen
	TdlsProhibit bool   `json:"tdls_prohibit"`
	UapsdEnabled bool   `json:"uapsd_enabled"`
	UserGroupID  string `json:"usergroup_id"`
	VLAN         int    `json:"vlan,omitempty"` // [2-9]|[1-9][0-9]{1,2}|[1-3][0-9]{3}|40[0-8][0-9]|409[0-5]|^$
	VLANEnabled  bool   `json:"vlan_enabled"`
	WEPIDX       int    `json:"wep_idx,omitempty"`      // [1-4]
	WLANBand     string `json:"wlan_band,omitempty"`    // 2g|5g|both
	WPAEnc       string `json:"wpa_enc,omitempty"`      // auto|ccmp
	WPAMode      string `json:"wpa_mode,omitempty"`     // auto|wpa1|wpa2
	XIappKey     string `json:"x_iapp_key,omitempty"`   // [0-9A-Fa-f]{32}
	XPassphrase  string `json:"x_passphrase,omitempty"` // [\x20-\x7E]{8,63}|[0-9a-fA-F]{64}
	XWEP         string `json:"x_wep,omitempty"`
}

func (*WLAN) UnmarshalJSON

func (n *WLAN) UnmarshalJSON(b []byte) error

type WLANGroup

type WLANGroup struct {
	ID     string `json:"_id,omitempty"`
	SiteID string `json:"site_id,omitempty"`

	Hidden   bool   `json:"attr_hidden,omitempty"`
	HiddenID string `json:"attr_hidden_id,omitempty"`
	NoDelete bool   `json:"attr_no_delete,omitempty"`
	NoEdit   bool   `json:"attr_no_edit,omitempty"`

	Name string `json:"name,omitempty"` // .{1,128}
}

func (*WLANGroup) UnmarshalJSON

func (n *WLANGroup) UnmarshalJSON(b []byte) error

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL