query

package
v1.2.7 Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2023 License: MPL-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AccessGroup          = "Group"
	AccessServiceAccount = "ServiceAccount"
)
View Source
const (
	CursorServices    = "servicesEndCursor"
	CursorServiceKeys = "keysEndCursor"
)
View Source
const CursorAccess = "accessEndCursor"
View Source
const CursorConnectors = "connectorsEndCursor"
View Source
const CursorGroups = "groupsEndCursor"
View Source
const CursorPolicies = "policiesEndCursor"
View Source
const CursorRemoteNetworks = "remoteNetworksEndCursor"
View Source
const CursorResources = "resourcesEndCursor"
View Source
const CursorUsers = "usersEndCursor"
View Source
const PageLimit = "pageLimit"

Variables

This section is empty.

Functions

func IsGqlKeyActive added in v0.2.4

func IsGqlKeyActive(item *GqlKeyIDEdge) bool

func IsGqlResourceActive added in v0.2.4

func IsGqlResourceActive(item *GqlResourceIDEdge) bool

Types

type Access added in v1.2.2

type Access struct {
	PaginatedResource[*AccessEdge]
}

type AccessEdge added in v1.2.2

type AccessEdge struct {
	Node Principal
}

type AddResourceAccess added in v1.2.1

type AddResourceAccess struct {
	OkError `graphql:"resourceAccessAdd(resourceId: $id, access: $access)"`
}

func (AddResourceAccess) IsEmpty added in v1.2.1

func (q AddResourceAccess) IsEmpty() bool

type BooleanFilterOperatorInput added in v0.3.0

type BooleanFilterOperatorInput struct {
	Eq bool `json:"eq"`
}

type ConnectorEdge

type ConnectorEdge struct {
	Node *gqlConnector
}

type ConnectorEntityResponse

type ConnectorEntityResponse struct {
	Entity *gqlConnector
	OkError
}

func (*ConnectorEntityResponse) IsEmpty added in v1.0.0

func (r *ConnectorEntityResponse) IsEmpty() bool

type ConnectorTokensResponse

type ConnectorTokensResponse struct {
	ConnectorTokens gqlConnectorTokens
	OkError
}

type Connectors

type Connectors struct {
	PaginatedResource[*ConnectorEdge]
}

func (Connectors) ToModel

func (c Connectors) ToModel() []*model.Connector

type CreateConnector

type CreateConnector struct {
	ConnectorEntityResponse `` /* 145-byte string literal not displayed */
}

type CreateGroup

type CreateGroup struct {
	GroupEntityResponse `graphql:"groupCreate(name: $name, userIds: $userIds, securityPolicyId: $securityPolicyId)"`
}

func (CreateGroup) IsEmpty added in v1.0.0

func (q CreateGroup) IsEmpty() bool

func (CreateGroup) ToModel

func (q CreateGroup) ToModel() *model.Group

type CreateRemoteNetwork

type CreateRemoteNetwork struct {
	RemoteNetworkEntityResponse `graphql:"remoteNetworkCreate(name: $name, isActive: $isActive, location: $location)"`
}

func (CreateRemoteNetwork) IsEmpty added in v1.0.0

func (q CreateRemoteNetwork) IsEmpty() bool

func (CreateRemoteNetwork) ToModel

type CreateResource

type CreateResource struct {
	ResourceEntityResponse `` /* 263-byte string literal not displayed */
}

func (CreateResource) IsEmpty added in v1.0.0

func (q CreateResource) IsEmpty() bool

type CreateServiceAccount

type CreateServiceAccount struct {
	ServiceAccountEntityResponse `graphql:"serviceAccountCreate(name: $name)"`
}

func (CreateServiceAccount) IsEmpty added in v1.0.0

func (q CreateServiceAccount) IsEmpty() bool

func (CreateServiceAccount) ToModel

type CreateServiceAccountKey

type CreateServiceAccountKey struct {
	ServiceAccountKeyEntityCreateResponse `graphql:"serviceAccountKeyCreate(expirationTime: $expirationTime, serviceAccountId: $serviceAccountId, name: $name)"`
}

func (CreateServiceAccountKey) IsEmpty added in v1.0.0

func (q CreateServiceAccountKey) IsEmpty() bool

func (CreateServiceAccountKey) ToModel

type CreateUser added in v1.1.0

type CreateUser struct {
	UserEntityResponse `` /* 129-byte string literal not displayed */
}

func (CreateUser) IsEmpty added in v1.1.0

func (q CreateUser) IsEmpty() bool

func (CreateUser) ToModel added in v1.1.0

func (q CreateUser) ToModel() *model.User

type DeleteConnector

type DeleteConnector struct {
	OkError `graphql:"connectorDelete(id: $id)"`
}

func (*DeleteConnector) IsEmpty added in v1.0.0

func (r *DeleteConnector) IsEmpty() bool

type DeleteGroup

type DeleteGroup struct {
	OkError `graphql:"groupDelete(id: $id)" json:"groupDelete"`
}

func (DeleteGroup) IsEmpty added in v1.0.0

func (q DeleteGroup) IsEmpty() bool

type DeleteRemoteNetwork

type DeleteRemoteNetwork struct {
	OkError `graphql:"remoteNetworkDelete(id: $id)"`
}

func (DeleteRemoteNetwork) IsEmpty added in v1.0.0

func (q DeleteRemoteNetwork) IsEmpty() bool

type DeleteResource

type DeleteResource struct {
	OkError `graphql:"resourceDelete(id: $id)"`
}

func (DeleteResource) IsEmpty added in v1.0.0

func (q DeleteResource) IsEmpty() bool

type DeleteServiceAccount

type DeleteServiceAccount struct {
	OkError `graphql:"serviceAccountDelete(id: $id)"`
}

func (DeleteServiceAccount) IsEmpty added in v1.0.0

func (q DeleteServiceAccount) IsEmpty() bool

type DeleteServiceAccountKey

type DeleteServiceAccountKey struct {
	OkError `graphql:"serviceAccountKeyDelete(id: $id)"`
}

func (DeleteServiceAccountKey) IsEmpty added in v1.0.0

func (q DeleteServiceAccountKey) IsEmpty() bool

type DeleteUser added in v1.1.0

type DeleteUser struct {
	OkError `graphql:"userDelete(id: $id)"`
}

func (DeleteUser) IsEmpty added in v1.1.0

func (q DeleteUser) IsEmpty() bool

type GenerateConnectorTokens

type GenerateConnectorTokens struct {
	ConnectorTokensResponse `graphql:"connectorGenerateTokens(connectorId: $connectorId)"`
}

func (GenerateConnectorTokens) IsEmpty added in v1.2.2

func (q GenerateConnectorTokens) IsEmpty() bool

func (GenerateConnectorTokens) ToModel

type GqlKeyIDEdge added in v0.2.4

type GqlKeyIDEdge struct {
	Node *gqlKeyID
}

type GqlResourceIDEdge added in v0.2.4

type GqlResourceIDEdge struct {
	Node *gqlResourceID
}

type GqlService added in v0.2.4

type GqlService struct {
	IDName
	Resources gqlResourceIDs `graphql:"resources(after: $resourcesEndCursor, first: $pageLimit)"`
	Keys      gqlKeyIDs      `graphql:"keys(after: $keysEndCursor, first: $pageLimit)"`
}

func (*GqlService) ToModel added in v0.2.4

func (s *GqlService) ToModel() *model.ServiceAccount

type GroupEdge

type GroupEdge struct {
	Node *gqlGroup
}

type GroupEntityResponse

type GroupEntityResponse struct {
	Entity *gqlGroup
	OkError
}

type GroupFilterInput added in v0.3.0

type GroupFilterInput struct {
	Name     *StringFilterOperationInput  `json:"name"`
	Type     GroupTypeFilterOperatorInput `json:"type"`
	IsActive BooleanFilterOperatorInput   `json:"isActive"`
}

func NewGroupFilterInput added in v0.3.0

func NewGroupFilterInput(input *model.GroupsFilter) *GroupFilterInput

type GroupTypeFilterOperatorInput added in v0.3.0

type GroupTypeFilterOperatorInput struct {
	In []string `json:"in"`
}

type Groups

type Groups struct {
	PaginatedResource[*GroupEdge]
}

func (Groups) ToModel

func (u Groups) ToModel() []*model.Group

type IDName

type IDName struct {
	ID   graphql.ID `json:"id"`
	Name string     `json:"name"`
}

type NextPageFunc

type NextPageFunc[E any] func(ctx context.Context, variables map[string]interface{}, cursor string) (*PaginatedResource[E], error)

type Node added in v1.2.2

type Node struct {
	ID graphql.ID `json:"id"`
}

type OkError

type OkError struct {
	Ok    bool   `json:"ok"`
	Error string `json:"error"`
}

func (OkError) ErrorStr added in v1.0.0

func (ok OkError) ErrorStr() string

func (OkError) OK added in v1.0.0

func (ok OkError) OK() bool

type PageInfo

type PageInfo struct {
	EndCursor   string
	HasNextPage bool
}

type PaginatedResource

type PaginatedResource[E any] struct {
	PageInfo PageInfo
	Edges    []E
}

func (*PaginatedResource[E]) FetchPages

func (r *PaginatedResource[E]) FetchPages(ctx context.Context, fetchNextPage NextPageFunc[E], variables map[string]interface{}) error

type PortRange

type PortRange struct {
	Start int `json:"start"`
	End   int `json:"end"`
}

type Principal added in v1.2.2

type Principal struct {
	Type string `graphql:"__typename"`
	Node `graphql:"... on Node"`
}

type Protocol

type Protocol struct {
	Ports  []*PortRange `json:"ports"`
	Policy string       `json:"policy"`
}

type Protocols

type Protocols struct {
	UDP       *Protocol `json:"udp"`
	TCP       *Protocol `json:"tcp"`
	AllowIcmp bool      `json:"allowIcmp"`
}

type ReadConnector

type ReadConnector struct {
	Connector *gqlConnector `graphql:"connector(id: $id)"`
}

func (ReadConnector) IsEmpty added in v1.0.0

func (q ReadConnector) IsEmpty() bool

func (ReadConnector) ToModel

func (q ReadConnector) ToModel() *model.Connector

type ReadConnectors

type ReadConnectors struct {
	Connectors `graphql:"connectors(after: $connectorsEndCursor, first: $pageLimit)"`
}

func (ReadConnectors) IsEmpty added in v1.0.0

func (q ReadConnectors) IsEmpty() bool

func (ReadConnectors) ToModel

func (q ReadConnectors) ToModel() []*model.Connector

type ReadGroup

type ReadGroup struct {
	Group *gqlGroup `graphql:"group(id: $id)"`
}

func (ReadGroup) IsEmpty added in v1.0.0

func (q ReadGroup) IsEmpty() bool

func (ReadGroup) ToModel

func (q ReadGroup) ToModel() *model.Group

type ReadGroups

type ReadGroups struct {
	Groups `graphql:"groups(filter: $filter, after: $groupsEndCursor, first: $pageLimit)"`
}

func (ReadGroups) IsEmpty added in v1.0.0

func (q ReadGroups) IsEmpty() bool

type ReadRemoteNetworkByID

type ReadRemoteNetworkByID struct {
	RemoteNetwork *gqlRemoteNetwork `graphql:"remoteNetwork(id: $id)"`
}

func (ReadRemoteNetworkByID) IsEmpty added in v1.0.0

func (r ReadRemoteNetworkByID) IsEmpty() bool

func (ReadRemoteNetworkByID) ToModel

type ReadRemoteNetworkByName

type ReadRemoteNetworkByName struct {
	RemoteNetworks gqlRemoteNetworks `graphql:"remoteNetworks(filter: {name: {eq: $name}})"`
}

func (ReadRemoteNetworkByName) IsEmpty added in v1.0.0

func (q ReadRemoteNetworkByName) IsEmpty() bool

type ReadRemoteNetworks

type ReadRemoteNetworks struct {
	RemoteNetworks `graphql:"remoteNetworks(after: $remoteNetworksEndCursor, first: $pageLimit)"`
}

func (ReadRemoteNetworks) IsEmpty added in v1.0.0

func (q ReadRemoteNetworks) IsEmpty() bool

type ReadResource

type ReadResource struct {
	Resource *gqlResource `graphql:"resource(id: $id)"`
}

func (ReadResource) IsEmpty added in v1.0.0

func (q ReadResource) IsEmpty() bool

type ReadResourceAccess added in v1.2.2

type ReadResourceAccess struct {
	Resource *gqlResourceAccess `graphql:"resource(id: $id)"`
}

func (ReadResourceAccess) IsEmpty added in v1.2.2

func (q ReadResourceAccess) IsEmpty() bool

type ReadResources

type ReadResources struct {
	Resources `graphql:"resources(after: $resourcesEndCursor, first: $pageLimit)"`
}

func (ReadResources) IsEmpty added in v1.0.0

func (r ReadResources) IsEmpty() bool

type ReadResourcesByName

type ReadResourcesByName struct {
	Resources `graphql:"resources(filter: {name: {eq: $name}}, after: $resourcesEndCursor, first: $pageLimit)"`
}

func (ReadResourcesByName) IsEmpty added in v1.0.0

func (q ReadResourcesByName) IsEmpty() bool

type ReadSecurityPolicies added in v0.2.4

type ReadSecurityPolicies struct {
	SecurityPolicies `graphql:"securityPolicies(after: $policiesEndCursor, first: $pageLimit)"`
}

func (ReadSecurityPolicies) IsEmpty added in v1.0.0

func (q ReadSecurityPolicies) IsEmpty() bool

func (ReadSecurityPolicies) ToModel added in v0.2.4

func (q ReadSecurityPolicies) ToModel() []*model.SecurityPolicy

type ReadSecurityPolicy added in v0.2.4

type ReadSecurityPolicy struct {
	SecurityPolicy *gqlSecurityPolicy `graphql:"securityPolicy(id: $id, name: $name)"`
}

func (ReadSecurityPolicy) IsEmpty added in v1.0.0

func (q ReadSecurityPolicy) IsEmpty() bool

func (ReadSecurityPolicy) ToModel added in v0.2.4

type ReadServiceAccount

type ReadServiceAccount struct {
	Service *GqlService `graphql:"serviceAccount(id: $id)"`
}

func (ReadServiceAccount) IsEmpty added in v1.0.0

func (q ReadServiceAccount) IsEmpty() bool

type ReadServiceAccountKey

type ReadServiceAccountKey struct {
	ServiceAccountKey *gqlServiceKey `graphql:"serviceAccountKey(id: $id)"`
}

func (ReadServiceAccountKey) IsEmpty added in v1.0.0

func (q ReadServiceAccountKey) IsEmpty() bool

func (ReadServiceAccountKey) ToModel

func (q ReadServiceAccountKey) ToModel() (*model.ServiceKey, error)

type ReadServiceAccounts

type ReadServiceAccounts struct {
	Services `graphql:"serviceAccounts(filter: $filter, after: $servicesEndCursor, first: $pageLimit)"`
}

func (ReadServiceAccounts) IsEmpty added in v1.0.0

func (q ReadServiceAccounts) IsEmpty() bool

type ReadShallowServiceAccount added in v0.2.4

type ReadShallowServiceAccount struct {
	ServiceAccount *gqlServiceAccount `graphql:"serviceAccount(id: $id)"`
}

func (ReadShallowServiceAccount) IsEmpty added in v1.0.0

func (q ReadShallowServiceAccount) IsEmpty() bool

func (ReadShallowServiceAccount) ToModel added in v0.2.4

type ReadShallowServiceAccounts added in v0.2.4

type ReadShallowServiceAccounts struct {
	ServiceAccounts `graphql:"serviceAccounts(after: $servicesEndCursor, first: $pageLimit)"`
}

func (ReadShallowServiceAccounts) IsEmpty added in v1.0.0

func (q ReadShallowServiceAccounts) IsEmpty() bool

type ReadUser

type ReadUser struct {
	User *gqlUser `graphql:"user(id: $id)"`
}

func (ReadUser) IsEmpty added in v1.0.0

func (q ReadUser) IsEmpty() bool

func (ReadUser) ToModel

func (q ReadUser) ToModel() *model.User

type ReadUsers

type ReadUsers struct {
	Users `graphql:"users(after: $usersEndCursor, first: $pageLimit)"`
}

func (ReadUsers) IsEmpty added in v1.0.0

func (q ReadUsers) IsEmpty() bool

type RemoteNetworkEdge

type RemoteNetworkEdge struct {
	Node gqlRemoteNetwork
}

type RemoteNetworkEntityResponse

type RemoteNetworkEntityResponse struct {
	Entity *gqlRemoteNetwork
	OkError
}

type RemoteNetworks

type RemoteNetworks struct {
	PaginatedResource[*RemoteNetworkEdge]
}

func (RemoteNetworks) ToModel

func (r RemoteNetworks) ToModel() []*model.RemoteNetwork

type RemoveResourceAccess added in v1.2.1

type RemoveResourceAccess struct {
	OkError `graphql:"resourceAccessRemove(resourceId: $id, principalIds: $principalIds)"`
}

func (RemoveResourceAccess) IsEmpty added in v1.2.1

func (q RemoveResourceAccess) IsEmpty() bool

type ResourceEdge

type ResourceEdge struct {
	Node *ResourceNode
}

type ResourceEntityResponse

type ResourceEntityResponse struct {
	Entity *gqlResource
	OkError
}

type ResourceNode

type ResourceNode struct {
	IDName
	Address struct {
		Value string
	}
	RemoteNetwork struct {
		ID graphql.ID
	}
	Protocols                *Protocols
	IsActive                 bool
	IsVisible                bool
	IsBrowserShortcutEnabled bool
	Alias                    string
	SecurityPolicy           *gqlSecurityPolicy
}

func (ResourceNode) ToModel

func (r ResourceNode) ToModel() *model.Resource

type Resources

type Resources struct {
	PaginatedResource[*ResourceEdge]
}

func (Resources) ToModel

func (r Resources) ToModel() []*model.Resource

type RevokeServiceAccountKey

type RevokeServiceAccountKey struct {
	OkError `graphql:"serviceAccountKeyRevoke(id: $id)"`
}

func (RevokeServiceAccountKey) IsEmpty added in v1.0.0

func (q RevokeServiceAccountKey) IsEmpty() bool

type SecurityPolicies added in v0.2.4

type SecurityPolicies struct {
	PaginatedResource[*SecurityPolicyEdge]
}

type SecurityPolicyEdge added in v0.2.4

type SecurityPolicyEdge struct {
	Node *gqlSecurityPolicy
}

type ServiceAccountEdge

type ServiceAccountEdge struct {
	Node *gqlServiceAccount
}

type ServiceAccountEntityResponse

type ServiceAccountEntityResponse struct {
	Entity *gqlServiceAccount
	OkError
}

type ServiceAccountFilterInput added in v0.2.4

type ServiceAccountFilterInput struct {
	Name StringFilter `json:"name"`
}

func NewServiceAccountFilterInput added in v0.2.4

func NewServiceAccountFilterInput(name string) *ServiceAccountFilterInput

type ServiceAccountKeyEntityCreateResponse

type ServiceAccountKeyEntityCreateResponse struct {
	ServiceAccountKeyEntityResponse
	Token string
}

type ServiceAccountKeyEntityResponse

type ServiceAccountKeyEntityResponse struct {
	Entity *gqlServiceKey
	OkError
}

type ServiceAccounts

type ServiceAccounts struct {
	PaginatedResource[*ServiceAccountEdge]
}

func (ServiceAccounts) ToModel

func (s ServiceAccounts) ToModel() []*model.ServiceAccount

type ServiceEdge added in v0.2.4

type ServiceEdge struct {
	Node *GqlService
}

type Services added in v0.2.4

type Services struct {
	PaginatedResource[*ServiceEdge]
}

func (*Services) ToModel added in v0.2.4

func (s *Services) ToModel() []*model.ServiceAccount

type StringFilter added in v0.2.4

type StringFilter struct {
	Eq string `json:"eq"`
}

type StringFilterOperationInput added in v0.3.0

type StringFilterOperationInput struct {
	Eq string `json:"eq"`
}

type UpdateConnector

type UpdateConnector struct {
	ConnectorEntityResponse `` /* 128-byte string literal not displayed */
}

type UpdateGroup

type UpdateGroup struct {
	GroupEntityResponse `graphql:"groupUpdate(id: $id, name: $name, addedUserIds: $addedUserIds, securityPolicyId: $securityPolicyId)"`
}

func (UpdateGroup) IsEmpty added in v1.0.0

func (q UpdateGroup) IsEmpty() bool

type UpdateGroupRemoveUsers added in v0.3.3

type UpdateGroupRemoveUsers struct {
	GroupEntityResponse `graphql:"groupUpdate(id: $id, removedUserIds: $removedUserIds)"`
}

func (UpdateGroupRemoveUsers) IsEmpty added in v1.0.0

func (q UpdateGroupRemoveUsers) IsEmpty() bool

type UpdateRemoteNetwork

type UpdateRemoteNetwork struct {
	RemoteNetworkEntityResponse `graphql:"remoteNetworkUpdate(id: $id, name: $name, location: $location)"`
}

func (UpdateRemoteNetwork) IsEmpty added in v1.0.0

func (q UpdateRemoteNetwork) IsEmpty() bool

func (UpdateRemoteNetwork) ToModel

type UpdateResource

type UpdateResource struct {
	ResourceEntityResponse `` /* 272-byte string literal not displayed */
}

func (UpdateResource) IsEmpty added in v1.0.0

func (q UpdateResource) IsEmpty() bool

type UpdateResourceActiveState

type UpdateResourceActiveState struct {
	OkError `graphql:"resourceUpdate(id: $id, isActive: $isActive)"`
}

func (UpdateResourceActiveState) IsEmpty added in v1.0.0

func (q UpdateResourceActiveState) IsEmpty() bool

type UpdateResourceRemoveGroups added in v0.3.0

type UpdateResourceRemoveGroups struct {
	ResourceEntityResponse `graphql:"resourceUpdate(id: $id, removedGroupIds: $removedGroupIds)"`
}

func (UpdateResourceRemoveGroups) IsEmpty added in v1.0.0

func (q UpdateResourceRemoveGroups) IsEmpty() bool

type UpdateServiceAccount

type UpdateServiceAccount struct {
	ServiceAccountEntityResponse `graphql:"serviceAccountUpdate(id: $id, name: $name, addedResourceIds: $addedResourceIds)"`
}

func (UpdateServiceAccount) IsEmpty added in v1.0.0

func (q UpdateServiceAccount) IsEmpty() bool

func (UpdateServiceAccount) ToModel

type UpdateServiceAccountKey

type UpdateServiceAccountKey struct {
	ServiceAccountKeyEntityResponse `graphql:"serviceAccountKeyUpdate(id: $id, name: $name)"`
}

func (UpdateServiceAccountKey) IsEmpty added in v1.0.0

func (q UpdateServiceAccountKey) IsEmpty() bool

func (UpdateServiceAccountKey) ToModel

type UpdateServiceAccountRemoveResources added in v0.3.0

type UpdateServiceAccountRemoveResources struct {
	ServiceAccountEntityResponse `graphql:"serviceAccountUpdate(id: $id, removedResourceIds: $removedResourceIds)"`
}

func (UpdateServiceAccountRemoveResources) IsEmpty added in v1.0.0

type UpdateUser added in v1.1.0

type UpdateUser struct {
	UserEntityResponse `graphql:"userDetailsUpdate(id: $id, firstName: $firstName, lastName: $lastName, state: $state)"`
}

func (UpdateUser) IsEmpty added in v1.1.0

func (q UpdateUser) IsEmpty() bool

func (UpdateUser) ToModel added in v1.1.0

func (q UpdateUser) ToModel() *model.User

type UpdateUserRole added in v1.1.0

type UpdateUserRole struct {
	UserEntityResponse `graphql:"userRoleUpdate(id: $id, role: $role)"`
}

func (UpdateUserRole) IsEmpty added in v1.1.0

func (q UpdateUserRole) IsEmpty() bool

func (UpdateUserRole) ToModel added in v1.1.0

func (q UpdateUserRole) ToModel() *model.User

type UserEdge

type UserEdge struct {
	Node *gqlUser
}

type UserEntityResponse added in v1.1.0

type UserEntityResponse struct {
	Entity *gqlUser
	OkError
}

type UserRole added in v1.1.0

type UserRole string

type UserStateUpdateInput added in v1.1.0

type UserStateUpdateInput string

func NewUserStateUpdateInput added in v1.1.0

func NewUserStateUpdateInput(val string) *UserStateUpdateInput

type Users

type Users struct {
	PaginatedResource[*UserEdge]
}

func (Users) ToModel

func (u Users) ToModel() []*model.User

Jump to

Keyboard shortcuts

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