api

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: May 24, 2024 License: GPL-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Commit string

Functions

func BoolPointer added in v1.0.3

func BoolPointer(b bool) *bool

func PrettyPrint

func PrettyPrint(title string, incoming interface{})

Types

type Client

type Client struct {
	*resty.Client
}

func NewClient

func NewClient(apiToken string, apiEndpoint string) *Client

func (*Client) CreateFact

func (c *Client) CreateFact(factNew FactJson, options *FactListOptions) (fact FactJson, statusCode int, Error error)

func (*Client) CreateFactEncode

func (c *Client) CreateFactEncode(factNew Fact, options *FactListOptions) (fact Fact, statusCode int, Error error)

func (*Client) CreateGroup

func (c *Client) CreateGroup(groupNew GroupJson, options *GroupListOptions) (group GroupJson, statusCode int, Error error)

func (*Client) CreateGroupEncode

func (c *Client) CreateGroupEncode(groupNew Group, options *GroupListOptions) (group Group, statusCode int, Error error)

func (*Client) CreateHost

func (c *Client) CreateHost(hostNew HostJson, options *HostListOptions) (host HostJson, statusCode int, Error error)

func (*Client) CreateHostEncode

func (c *Client) CreateHostEncode(hostNew Host, options *HostListOptions) (host Host, statusCode int, Error error)
func (c *Client) CreateLink(linkNew LinkCreateRequest, options *LinkListOptions) (link Link, statusCode int, Error error)

func (*Client) CreateProfile

func (c *Client) CreateProfile(profileNew ProfileCreateRequest, options *ProfileListOptions) (profile Profile, statusCode int, Error error)

func (*Client) CreateRuleset

func (c *Client) CreateRuleset(rulesetNew RulesetCreateRequest, options *RulesetListOptions) (ruleset Ruleset, statusCode int, Error error)

func (*Client) CreateService

func (c *Client) CreateService(serviceNew ServiceCreateRequest, options *ServiceListOptions) (service Service, statusCode int, Error error)

func (*Client) CreateZone

func (c *Client) CreateZone(zoneNew ZoneCreateRequest, options *ZoneListOptions) (zone Zone, statusCode int, Error error)

func (*Client) DeleteFact

func (c *Client) DeleteFact(FactID string, options *FactListOptions) (fact Fact, statusCode int, Error error)

func (*Client) DeleteGroup

func (c *Client) DeleteGroup(GroupID string, options *GroupListOptions) (group Group, statusCode int, Error error)

func (*Client) DeleteHost

func (c *Client) DeleteHost(hostID string, options *HostListOptions) (host Host, statusCode int, Error error)
func (c *Client) DeleteLink(LinkID string, options *LinkListOptions) (link Link, statusCode int, Error error)

func (*Client) DeleteProfile

func (c *Client) DeleteProfile(ProfileID string, options *ProfileListOptions) (profile Profile, statusCode int, Error error)

func (*Client) DeleteRuleset

func (c *Client) DeleteRuleset(rulesetId string, options *RulesetListOptions) (ruleset Ruleset, statusCode int, Error error)

func (*Client) DeleteService

func (c *Client) DeleteService(ServiceID string, options *ServiceListOptions) (service Service, statusCode int, Error error)

func (*Client) DeleteZone

func (c *Client) DeleteZone(ZoneID string, options *ZoneListOptions) (zone Zone, statusCode int, Error error)

func (*Client) GetExternal

func (c *Client) GetExternal(ExternalID string, options *ExternalListOptions) (external External, statusCode int, Error error)

func (*Client) GetExternals

func (c *Client) GetExternals(options *ExternalListOptions) (externalList ExternalList, statusCode int, Error error)

func (*Client) GetFact

func (c *Client) GetFact(FactID string, options *FactListOptions) (fact FactJson, statusCode int, Error error)

func (*Client) GetFactByName

func (c *Client) GetFactByName(FactName string, options *FactListOptions) (fact FactJson, statusCode int, Error error)

func (*Client) GetFactByNameEncode

func (c *Client) GetFactByNameEncode(FactName string, options *FactListOptions) (fact Fact, statusCode int, Error error)

func (*Client) GetFactEncode

func (c *Client) GetFactEncode(FactID string, options *FactListOptions) (fact Fact, statusCode int, Error error)

func (*Client) GetFacts

func (c *Client) GetFacts(options *FactsListOptions) (factsList FactsListJson, statusCode int, Error error)

func (*Client) GetFactsEncode

func (c *Client) GetFactsEncode(options *FactsListOptions) (factsList FactsList, statusCode int, Error error)

func (*Client) GetGroup

func (c *Client) GetGroup(GroupID string, options *GroupListOptions) (group GroupJson, statusCode int, Error error)

func (*Client) GetGroupEncode

func (c *Client) GetGroupEncode(GroupID string, options *GroupListOptions) (group Group, statusCode int, Error error)

func (*Client) GetGroups

func (c *Client) GetGroups(options *GroupsListOptions) (groupsList GroupsListJson, statusCode int, Error error)

func (*Client) GetGroupsEncode

func (c *Client) GetGroupsEncode(options *GroupsListOptions) (groupsList GroupsList, statusCode int, Error error)

func (*Client) GetHost

func (c *Client) GetHost(hostID string, options *HostListOptions) (host HostJson, statusCode int, Error error)

func (*Client) GetHostEncode

func (c *Client) GetHostEncode(hostID string, options *HostListOptions) (host Host, statusCode int, Error error)

func (*Client) GetHosts

func (c *Client) GetHosts(options *HostsListOptions) (hostsList HostsListJson, statusCode int, Error error)

func (*Client) GetHostsEncode

func (c *Client) GetHostsEncode(options *HostsListOptions) (hostsList HostsList, statusCode int, Error error)
func (c *Client) GetLink(LinkID string, options *LinkListOptions) (link Link, statusCode int, Error error)
func (c *Client) GetLinks(options *LinksListOptions) (linksList LinksList, statusCode int, Error error)

func (*Client) GetProfile

func (c *Client) GetProfile(ProfileID string, options *ProfileListOptions) (profile Profile, statusCode int, Error error)

func (*Client) GetProfiles

func (c *Client) GetProfiles(options *ProfilesListOptions) (profilesList ProfilesList, statusCode int, Error error)

func (*Client) GetRuleset

func (c *Client) GetRuleset(rulesetId string, options *RulesetListOptions) (ruleset Ruleset, statusCode int, Error error)

func (*Client) GetRulesetByName

func (c *Client) GetRulesetByName(rulesetName string, options *RulesetListOptions) (ruleset Ruleset, statusCode int, Error error)

func (*Client) GetRulesets

func (c *Client) GetRulesets(options *RulesetsListOptions) (rulesetList RulesetsList, statusCode int, Error error)

func (*Client) GetService

func (c *Client) GetService(ServiceID string, options *ServiceListOptions) (service Service, statusCode int, Error error)

func (*Client) GetServices

func (c *Client) GetServices(options *ServicesListOptions) (servicesList ServicesList, statusCode int, Error error)

func (*Client) GetZone

func (c *Client) GetZone(ZoneID string, options *ZoneListOptions) (zone Zone, statusCode int, Error error)

func (*Client) GetZoneByName

func (c *Client) GetZoneByName(ZoneName string, options *ZoneListOptions) (zone Zone, statusCode int, Error error)

func (*Client) GetZones

func (c *Client) GetZones(options *ZonesListOptions) (zonesList ZonesList, statusCode int, Error error)

func (*Client) UpdateFact

func (c *Client) UpdateFact(FactID string, FactUpdate FactJson, options *FactListOptions) (fact FactJson, statusCode int, Error error)

func (*Client) UpdateFactEncode

func (c *Client) UpdateFactEncode(FactID string, factUpdate Fact, options *FactListOptions) (fact Fact, statusCode int, Error error)

func (*Client) UpdateGroup

func (c *Client) UpdateGroup(GroupID string, GroupUpdate GroupJson, options *GroupListOptions) (group GroupJson, statusCode int, Error error)

func (*Client) UpdateGroupEncode

func (c *Client) UpdateGroupEncode(GroupID string, groupUpdate Group, options *GroupListOptions) (group Group, statusCode int, Error error)

func (*Client) UpdateHost

func (c *Client) UpdateHost(hostID string, hostUpdate HostJson, options *HostListOptions) (host HostJson, statusCode int, Error error)

func (*Client) UpdateHostEncode

func (c *Client) UpdateHostEncode(hostID string, hostUpdate Host, options *HostListOptions) (host Host, statusCode int, Error error)
func (c *Client) UpdateLink(LinkID string, LinkUpdate LinkUpdateRequest, options *LinkListOptions) (link Link, statusCode int, Error error)

func (*Client) UpdateProfile

func (c *Client) UpdateProfile(ProfileID string, ProfileUpdate ProfileUpdateRequest, options *ProfileListOptions) (profile Profile, statusCode int, Error error)

func (*Client) UpdateRuleset

func (c *Client) UpdateRuleset(rulesetId string, rulesetUpdate RulesetUpdateRequest, options *RulesetListOptions) (ruleset Ruleset, statusCode int, Error error)

func (*Client) UpdateService

func (c *Client) UpdateService(ServiceID string, ServiceUpdate ServiceUpdateRequest, options *ServiceListOptions) (service Service, statusCode int, Error error)

func (*Client) UpdateZone

func (c *Client) UpdateZone(ZoneID string, ZoneUpdate ZoneUpdateRequest, options *ZoneListOptions) (zone Zone, statusCode int, Error error)

type Connection

type Connection struct {
	ApiPort     int         `json:"api_port"`
	Host        string      `json:"host"`
	Password    string      `json:"password"`
	Port        int         `json:"port"`
	SSLOptions  *SSLOptions `json:"ssl_options"`
	User        string      `json:"user"`
	VirtualHost string      `json:"virtual_host"`
}

type Ec2SecurityGroupIds

type Ec2SecurityGroupIds struct {
	Region string `json:"region"`
	SgId   string `json:"sgid"`
}

type External

type External struct {
	AddressHandling string `json:"address_handling"`
	Enabled         bool   `json:"enabled"`
	ID              string `json:"id"`
	Name            string `json:"name"`
	State           string `json:"state"`
	Timestamp       int    `json:"timestamp"`
	V4              V4     `json:"v4"`
	V6              V6     `json:"v6"`
}

type ExternalList

type ExternalList []External

type ExternalListOptions

type ExternalListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type Fact

type Fact struct {
	ID     string                `json:"id"`
	Name   string                `json:"name"`
	Groups map[string]*FactGroup `json:"groups"`
}

func EncodeFact added in v1.0.2

func EncodeFact(factJson FactJson) (fact Fact)

type FactCreateRequest

type FactCreateRequest struct {
	Name   string                `json:"name"`
	Groups map[string]*FactGroup `json:"groups"`
}

type FactCreateResponse

type FactCreateResponse struct {
	ID     string `json:"id"`
	Result string `json:"result"`
}

type FactGroup

type FactGroup struct {
	Vars     *string  `json:"vars,omitempty"`
	Hosts    *string  `json:"hosts"`
	Children []string `json:"children"`
}

type FactGroupJson

type FactGroupJson struct {
	Vars     map[string]any            `json:"vars,omitempty"`
	Hosts    map[string]map[string]any `json:"hosts"`
	Children []string                  `json:"children"`
}

type FactJson

type FactJson struct {
	ID     string                    `json:"id,omitempty"`
	Name   string                    `json:"name"`
	Groups map[string]*FactGroupJson `json:"groups"`
}

func DecodeFact added in v1.0.2

func DecodeFact(fact Fact) (factJson FactJson, err error)

type FactListOptions

type FactListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type FactUpdateRequest

type FactUpdateRequest struct {
	Name   string                `json:"name"`
	Groups map[string]*FactGroup `json:"groups"`
}

FactUpdateRequest is a struct for the request object required to update an Fact

type FactsList

type FactsList []Fact

type FactsListJson

type FactsListJson []FactJson

type FactsListOptions

type FactsListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type Group

type Group struct {
	ID                  string                 `json:"id"`
	Description         string                 `json:"description"`
	Name                string                 `json:"name"`
	ProfileId           string                 `json:"profile_id"`
	ProfileName         string                 `json:"profile_name"`
	ProfileVersion      string                 `json:"profile_version"`
	Ec2SecurityGroupIds []*Ec2SecurityGroupIds `json:"ec2_security_group_ids"`
	Vars                string                 `json:"vars"`
	AlertEnable         *bool                  `json:"alert_enable,omitempty"`
}

type GroupCreateRequest

type GroupCreateRequest struct {
	Description         string                 `json:"description,omitempty"`
	Name                string                 `json:"name"`
	ProfileId           string                 `json:"profile_id,omitempty"`
	ProfileName         string                 `json:"profile_name,omitempty"`
	ProfileVersion      string                 `json:"profile_version,omitempty"`
	Ec2SecurityGroupIds []*Ec2SecurityGroupIds `json:"ec2_security_group_ids"`
	Vars                string                 `json:"vars"`
	AlertEnable         *bool                  `json:"alert_enable,omitempty"`
}

type GroupCreateResponse

type GroupCreateResponse struct {
	ID     string `json:"id"`
	Result string `json:"result"`
}

type GroupJson

type GroupJson struct {
	ID                  string                 `json:"id,omitempty"`
	Description         string                 `json:"description,omitempty"`
	Name                string                 `json:"name,omitempty"`
	ProfileId           string                 `json:"profile_id,omitempty"`
	ProfileName         string                 `json:"profile_name,omitempty"`
	ProfileVersion      string                 `json:"profile_version,omitempty"`
	Ec2SecurityGroupIds []*Ec2SecurityGroupIds `json:"ec2_security_group_ids,omitempty"`
	Vars                map[string]any         `json:"vars,omitempty"` //parsed json
	AlertEnable         *bool                  `json:"alert_enable,omitempty"`
}

type GroupListOptions

type GroupListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type GroupUpdateRequest

type GroupUpdateRequest struct {
	Description         string                 `json:"description,omitempty"`
	Name                string                 `json:"name,omitempty"`
	ProfileId           string                 `json:"profile_id,omitempty"`
	ProfileName         string                 `json:"profile_name,omitempty"`
	ProfileVersion      string                 `json:"profile_version,omitempty"`
	Ec2SecurityGroupIds []*Ec2SecurityGroupIds `json:"ec2_security_group_ids"`
	Vars                string                 `json:"vars,omitempty"`
	AlertEnable         *bool                  `json:"alert_enable,omitempty"`
}

GroupUpdateRequest is a struct for the request object required to update a Group

type GroupsList

type GroupsList []Group

type GroupsListJson

type GroupsListJson []GroupJson

type GroupsListOptions

type GroupsListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type Host

type Host struct {
	Environment string `json:"environment"`
	Group       string `json:"group"`
	ID          string `json:"id"`
	HostKey     string `json:"hostkey"`
	Location    string `json:"location"`
	Name        string `json:"name"`
	Vars        string `json:"vars"` //raw json for Terraform
	AlertEnable *bool  `json:"alert_enable,omitempty"`
}

type HostCreateRequest

type HostCreateRequest struct {
	Environment string `json:"environment"`
	Group       string `json:"group"`
	HostKey     string `json:"hostkey"`
	Location    string `json:"location"`
	Name        string `json:"name"`
	Vars        string `json:"vars"`
	AlertEnable *bool  `json:"alert_enable,omitempty"`
}

type HostCreateResponse

type HostCreateResponse struct {
	Environment string `json:"environment"`
	Group       string `json:"group"`
	ID          string `json:"id"`
	HostKey     string `json:"hostkey"`
	Location    string `json:"location"`
	Name        string `json:"name"`
	Vars        string `json:"vars"`
	AlertEnable *bool  `json:"alert_enable,omitempty"`
}

type HostJson

type HostJson struct {
	Environment string         `json:"environment,omitempty"`
	Group       string         `json:"group,omitempty"`
	ID          string         `json:"id,omitempty"`
	HostKey     string         `json:"hostkey,omitempty"`
	Location    string         `json:"location,omitempty"`
	Name        string         `json:"name,omitempty"`
	Vars        map[string]any `json:"vars,omitempty"` //parsed json
	AlertEnable *bool          `json:"alert_enable,omitempty"`
}

type HostListOptions

type HostListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type HostUpdateRequest

type HostUpdateRequest struct {
	Environment string `json:"environment,omitempty"`
	Group       string `json:"group,omitempty"`
	ID          string `json:"id,omitempty"`
	HostKey     string `json:"hostkey,omitempty"`
	Location    string `json:"location,omitempty"`
	Name        string `json:"name,omitempty"`
	Vars        string `json:"vars,omitempty"`
	AlertEnable *bool  `json:"alert_enable,omitempty"`
}

HostUpdateRequest is a struct for the request object required to update a Host

type HostsList

type HostsList []Host

type HostsListJson

type HostsListJson []HostJson

type HostsListOptions

type HostsListOptions struct {
	Limit  int    `json:"limit,omitempty"`
	Page   int    `json:"page,omitempty"`
	Active string `json:"active,omitempty"`
}
type Link struct {
	ID              string      `json:"id"`
	AddressHandling string      `json:"address_handling"`
	Connection      *Connection `json:"connection"`
	ConnectionType  string      `json:"connection_type"`
	Direction       string      `json:"direction"`
	Enabled         bool        `json:"enabled"`
	Name            string      `json:"name"`
}

type LinkCreateRequest

type LinkCreateRequest struct {
	AddressHandling string      `json:"address_handling"`
	Connection      *Connection `json:"connection"`
	ConnectionType  string      `json:"connection_type"`
	Direction       string      `json:"direction"`
	Enabled         bool        `json:"enabled"`
	Name            string      `json:"name"`
}

type LinkCreateResponse

type LinkCreateResponse struct {
	ID     string `json:"id"`
	Result string `json:"result"`
}

type LinkListOptions

type LinkListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type LinkUpdateRequest

type LinkUpdateRequest struct {
	AddressHandling string      `json:"address_handling"`
	Connection      *Connection `json:"connection"`
	ConnectionType  string      `json:"connection_type"`
	Direction       string      `json:"direction"`
	Enabled         bool        `json:"enabled"`
	Name            string      `json:"name"`
}

LinkUpdateRequest is a struct for the request object required to update a Link

type LinksList []Link

type LinksListOptions

type LinksListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type PortProtocol

type PortProtocol struct {
	Ports    []string `json:"ports"`
	Protocol string   `json:"protocol"`
}

type Profile

type Profile struct {
	ID      string `json:"id"`
	Name    string `json:"name"`
	Version string `json:"version"`
}

type ProfileCreateRequest

type ProfileCreateRequest struct {
	Name    string `json:"name"`
	Version string `json:"version,omitempty"`
}

type ProfileCreateResponse

type ProfileCreateResponse struct {
	ID     string `json:"id"`
	Result string `json:"result"`
}

type ProfileListOptions

type ProfileListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type ProfileUpdateRequest

type ProfileUpdateRequest struct {
	Name    string `json:"name,omitempty"`
	Version string `json:"version,omitempty"`
}

ProfileUpdateRequest is a struct for the request object required to update a Profile

type ProfilesList

type ProfilesList []Profile

type ProfilesListOptions

type ProfilesListOptions struct {
	Limit  int  `json:"limit"`
	Page   int  `json:"page"`
	Active bool `json:"active"`
}

type Rule

type Rule struct {
	Action       string   `json:"action"`
	Active       bool     `json:"active"`
	Comment      string   `json:"comment"`
	Environments []string `json:"environments"`
	Group        string   `json:"group"`
	GroupType    string   `json:"group_type"`
	Interface    string   `json:"interface"`
	Log          bool     `json:"log"`
	LogPrefix    string   `json:"log_prefix"`
	Order        int      `json:"order"`
	Service      string   `json:"service"`
	States       []string `json:"states"`
	Type         string   `json:"type"`
}

type Rules

type Rules struct {
	Inbound  []*Rule `json:"inbound"`
	Outbound []*Rule `json:"outbound"`
}

type Ruleset

type Ruleset struct {
	ID        string  `json:"id"`
	Name      string  `json:"name"`
	ProfileId *string `json:"profile_id,omitempty"`
	Rules     *Rules  `json:"rules"`
}

type RulesetCreateRequest

type RulesetCreateRequest struct {
	Name      string  `json:"name"`
	Rules     *Rules  `json:"rules,omitempty"`
	ProfileId *string `json:"profile_id,omitempty"`
}

type RulesetListOptions

type RulesetListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type RulesetUpdateRequest

type RulesetUpdateRequest struct {
	Name      string  `json:"name"`
	Rules     *Rules  `json:"rules,omitempty"`
	ProfileId *string `json:"profile_id,omitempty"`
}

type RulesetsList

type RulesetsList []Ruleset

type RulesetsListOptions

type RulesetsListOptions struct {
	Limit  int  `json:"limit"`
	Page   int  `json:"page"`
	Names  bool `json:"names"`
	Active bool `json:"active"`
}

type SSLOptions

type SSLOptions struct {
	CaCertFile           string `json:"cacertfile"`
	CertFile             string `json:"certfile"`
	FailIfNoPeerCert     bool   `json:"fail_if_no_peer_cert"`
	KeyFile              string `json:"keyfile"`
	ServerNameIndication string `json:"server_name_indication"`
	Verify               string `json:"verify"`
}

type Service

type Service struct {
	ID       string          `json:"id"`
	Services []*PortProtocol `json:"services"`
	Name     string          `json:"name"`
	Version  int             `json:"version"`
}

type ServiceCreateRequest

type ServiceCreateRequest struct {
	Services []*PortProtocol `json:"services"`
	Name     string          `json:"name"`
	Version  int             `json:"version"`
}

type ServiceCreateResponse

type ServiceCreateResponse struct {
	ID     string `json:"id"`
	Result string `json:"result"`
}

type ServiceListOptions

type ServiceListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type ServiceUpdateRequest

type ServiceUpdateRequest struct {
	Services []*PortProtocol `json:"services"`
	Name     string          `json:"name"`
	Version  int             `json:"version"`
}

type ServicesList

type ServicesList []Service

type ServicesListOptions

type ServicesListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type V4

type V4 struct {
	Groups map[string]map[string][]string `json:"groups"`
	Zones  map[string]map[string][]string `json:"zones"`
}

type V6

type V6 struct {
	Groups map[string]map[string][]string `json:"groups"`
	Zones  map[string]map[string][]string `json:"zones"`
}

type Zone

type Zone struct {
	Created       string   `json:"created"`
	ID            string   `json:"id"`
	IPv4Addresses []string `json:"ipv4_addresses"`
	IPv6Addresses []string `json:"ipv6_addresses"`
	Name          string   `json:"name"`
}

type ZoneCreateRequest

type ZoneCreateRequest struct {
	IPv4Addresses []string `json:"ipv4_addresses"`
	IPv6Addresses []string `json:"ipv6_addresses"`
	Name          string   `json:"name"`
}

type ZoneCreateResponse

type ZoneCreateResponse struct {
	ID     string `json:"id"`
	Result string `json:"result"`
}

type ZoneListOptions

type ZoneListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

type ZoneUpdateRequest

type ZoneUpdateRequest struct {
	IPv4Addresses []string `json:"ipv4_addresses"`
	IPv6Addresses []string `json:"ipv6_addresses"`
	Name          string   `json:"name"`
}

ZoneUpdateRequest is a struct for the request object required to update a Zone

type ZonesList

type ZonesList []Zone

type ZonesListOptions

type ZonesListOptions struct {
	Limit int `json:"limit"`
	Page  int `json:"page"`
}

Jump to

Keyboard shortcuts

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