types

package
v1.7.5 Latest Latest
Warning

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

Go to latest
Published: Mar 8, 2024 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RunCreationManual    = "MANUAL"
	RunCreationScheduled = "SCHEDULED"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Annotation added in v1.6.2

type Annotation struct {
	Content     string  `json:"content"`
	Width       float64 `json:"width"`
	Height      float64 `json:"height"`
	Name        string  `json:"name"`
	Coordinates struct {
		X float64 `json:"x"`
		Y float64 `json:"y"`
	} `json:"coordinates"`
}

type Categories added in v1.7.0

type Categories struct {
	Next     any        `json:"next"`
	Previous any        `json:"previous"`
	Page     int        `json:"page"`
	Last     int        `json:"last"`
	Count    int        `json:"count"`
	Results  []Category `json:"results"`
}

type Category added in v1.7.0

type Category struct {
	ID            uuid.UUID `json:"id"`
	Name          string    `json:"name"`
	Description   string    `json:"description"`
	WorkflowCount int       `json:"workflow_count"`
	ToolCount     int       `json:"tool_count"`
}

type Config

type Config struct {
	User struct {
		Token         string
		TokenFilePath string
		VaultId       uuid.UUID
	}
	BaseUrl    string
	Dependency string
}

type Connection

type Connection struct {
	Source struct {
		ID string `json:"id"`
	} `json:"source"`
	Destination struct {
		ID string `json:"id"`
	} `json:"destination"`
}

type CopyWorkflowRequest

type CopyWorkflowRequest struct {
	SpaceID   uuid.UUID  `json:"space_info"`
	ProjectID *uuid.UUID `json:"project_info,omitempty"`
}

type CopyWorkflowResponse

type CopyWorkflowResponse struct {
	ID           uuid.UUID `json:"id"`
	Name         string    `json:"name"`
	Description  string    `json:"description"`
	SpaceInfo    uuid.UUID `json:"space_info"`
	ProjectInfo  uuid.UUID `json:"project_info"`
	CreatedDate  time.Time `json:"created_date"`
	ModifiedDate time.Time `json:"modified_date"`
	Playground   bool      `json:"playground"`
}

type CreateProjectRequest

type CreateProjectRequest struct {
	Name        string    `json:"name"`
	Description string    `json:"description"`
	SpaceID     uuid.UUID `json:"space_info"`
}

type CreateRun

type CreateRun struct {
	Machines  Machines   `json:"machines"`
	VersionID uuid.UUID  `json:"workflow_version_info"`
	Vault     uuid.UUID  `json:"vault"`
	Fleet     *uuid.UUID `json:"fleet,omitempty"`
}

type CreateRunResponse

type CreateRunResponse struct {
	ID        uuid.UUID `json:"id"`
	Name      string    `json:"name"`
	Machines  Machines  `json:"machines"`
	VersionID uuid.UUID `json:"workflow_version_info"`
	HiveInfo  uuid.UUID `json:"hive_info"`
}

type CreateSpaceRequest

type CreateSpaceRequest struct {
	Name        string    `json:"name"`
	Description string    `json:"description"`
	VaultInfo   uuid.UUID `json:"vault_info"`
}

type CreateWorkflowRequest

type CreateWorkflowRequest struct {
	Name        string     `json:"name"`
	Description string     `json:"description"`
	SpaceID     uuid.UUID  `json:"space_info"`
	ProjectID   *uuid.UUID `json:"project_info,omitempty"`
}

type CreateWorkflowResponse

type CreateWorkflowResponse struct {
	ID           uuid.UUID `json:"id"`
	Name         string    `json:"name"`
	Description  string    `json:"description"`
	SpaceInfo    uuid.UUID `json:"space_info"`
	ProjectInfo  uuid.UUID `json:"project_info"`
	CreatedDate  time.Time `json:"created_date"`
	ModifiedDate time.Time `json:"modified_date"`
	Playground   bool      `json:"playground"`
}

type File added in v1.5.0

type File struct {
	ID           string    `json:"id"`
	Name         string    `json:"name"`
	Vault        string    `json:"vault"`
	TweID        string    `json:"twe_id"`
	ArtifactID   string    `json:"artifact_id"`
	Size         int       `json:"size"`
	PrettySize   string    `json:"pretty_size"`
	ModifiedDate time.Time `json:"modified_date"`
}

type Files added in v1.5.0

type Files struct {
	Next     string `json:"next"`
	Previous string `json:"previous"`
	Page     int    `json:"page"`
	Last     int    `json:"last"`
	Count    int    `json:"count"`
	Results  []File `json:"results"`
}

type FilesResponse

type FilesResponse struct {
	Next     string         `json:"next"`
	Previous string         `json:"previous"`
	Page     int            `json:"page"`
	Last     int            `json:"last"`
	Count    int            `json:"count"`
	Results  []TrickestFile `json:"results"`
}

type Fleet

type Fleet struct {
	ID       uuid.UUID `json:"id"`
	Name     string    `json:"name"`
	Vault    uuid.UUID `json:"vault"`
	Cluster  string    `json:"cluster"`
	State    string    `json:"state"`
	Machines []struct {
		Name        string `json:"name"`
		Description string `json:"description"`
		Mem         string `json:"mem"`
		CPU         string `json:"cpu"`
		Total       int    `json:"total"`
		Running     int    `json:"running"`
		Up          int    `json:"up"`
		Down        int    `json:"down"`
	} `json:"machines"`
	CreatedDate  time.Time `json:"created_date"`
	ModifiedDate time.Time `json:"modified_date"`
	Type         string    `json:"type"`
	Default      bool      `json:"default"`
}

type Fleets added in v1.3.3

type Fleets struct {
	Next     string  `json:"next"`
	Previous string  `json:"previous"`
	Page     int     `json:"page"`
	Last     int     `json:"last"`
	Count    int     `json:"count"`
	Results  []Fleet `json:"results"`
}

type Machines

type Machines struct {
	Small      *int `json:"small,omitempty"`
	Medium     *int `json:"medium,omitempty"`
	Large      *int `json:"large,omitempty"`
	Default    *int `json:"default,omitempty"`
	SelfHosted *int `json:"self_hosted,omitempty"`
}

type Node

type Node struct {
	ID   uuid.UUID `json:"id"`
	Name string    `json:"name"`
	Meta struct {
		Label       string `json:"label"`
		Coordinates struct {
			X float64 `json:"x"`
			Y float64 `json:"y"`
		} `json:"coordinates"`
	} `json:"meta"`
	Type   string                `json:"type"`
	Inputs map[string]*NodeInput `json:"inputs"`
	Script *struct {
		Args   []interface{} `json:"args"`
		Image  string        `json:"image"`
		Source string        `json:"source"`
	} `json:"script,omitempty"`
	Outputs struct {
		Folder *struct {
			Type  string `json:"type"`
			Order int    `json:"order"`
		} `json:"folder,omitempty"`
		File *struct {
			Type  string `json:"type"`
			Order int    `json:"order"`
		} `json:"file,omitempty"`
		Output *struct {
			Type  string `json:"type"`
			Order *int   `json:"order,omitempty"`
		} `json:"output,omitempty"`
	} `json:"outputs"`
	BeeType   string `json:"bee_type"`
	Container *struct {
		Args    []string `json:"args,omitempty"`
		Image   string   `json:"image"`
		Command []string `json:"command"`
	} `json:"container,omitempty"`
	OutputCommand   *string `json:"output_command,omitempty"`
	WorkerConnected *string `json:"workerConnected,omitempty"`
}

type NodeInput

type NodeInput struct {
	Type            string      `json:"type"`
	Order           int         `json:"order"`
	Value           interface{} `json:"value,omitempty"`
	Command         *string     `json:"command,omitempty"`
	Description     *string     `json:"description,omitempty"`
	WorkerConnected *bool       `json:"workerConnected,omitempty"`
	Multi           *bool       `json:"multi,omitempty"`
	Visible         *bool       `json:"visible,omitempty"`
}

type OutputsConfig

type OutputsConfig struct {
	Outputs []string `yaml:"outputs"`
}

type Parameter

type Parameter struct {
	Value interface{} `json:"value"`
	Type  string      `json:"type"`
}

type PrimitiveNode

type PrimitiveNode struct {
	Name        string      `json:"name"`
	Type        string      `json:"type"`
	Label       string      `json:"label"`
	Value       interface{} `json:"value"`
	TypeName    string      `json:"type_name"`
	Coordinates struct {
		X float64 `json:"x"`
		Y float64 `json:"y"`
	} `json:"coordinates"`
	ParamName  *string `json:",omitempty"`
	UpdateFile *bool   `json:",omitempty"`
}

type Profile

type Profile struct {
	VaultInfo  VaultInfo `json:"vault_info"`
	Bio        string    `json:"bio"`
	Type       int       `json:"type"`
	Username   string    `json:"username"`
	EntityType string    `json:"entity_type"`
}

type Project

type Project struct {
	ID            uuid.UUID  `json:"id"`
	Name          string     `json:"name"`
	Description   string     `json:"description"`
	SpaceInfo     uuid.UUID  `json:"space_info"`
	SpaceName     string     `json:"space_name"`
	WorkflowCount int        `json:"workflow_count"`
	CreatedDate   time.Time  `json:"created_date"`
	ModifiedDate  time.Time  `json:"modified_date"`
	Author        string     `json:"author"`
	Workflows     []Workflow `json:"workflows,omitempty"`
}

type Run

type Run struct {
	ID                  *uuid.UUID `json:"id,omitempty"`
	Name                string     `json:"name,omitempty"`
	Status              string     `json:"status,omitempty"`
	Machines            Machines   `json:"machines,omitempty"`
	WorkflowVersionInfo *uuid.UUID `json:"workflow_version_info,omitempty"`
	WorkflowInfo        *uuid.UUID `json:"workflow_info,omitempty"`
	WorkflowName        string     `json:"workflow_name,omitempty"`
	SpaceInfo           *uuid.UUID `json:"space_info,omitempty"`
	SpaceName           string     `json:"space_name,omitempty"`
	ProjectInfo         *uuid.UUID `json:"project_info,omitempty"`
	ProjectName         string     `json:"project_name,omitempty"`
	CreationType        string     `json:"creation_type,omitempty"`
	CreatedDate         time.Time  `json:"created_date,omitempty"`
	StartedDate         time.Time  `json:"started_date,omitempty"`
	CompletedDate       time.Time  `json:"completed_date,omitempty"`
	Finished            bool       `json:"finished,omitempty"`
	Author              string     `json:"author,omitempty"`
	Fleet               *uuid.UUID `json:"fleet,omitempty"`
	IPAddresses         []string   `json:"ip_addresses,omitempty"`
}

type Runs

type Runs struct {
	Next     string `json:"next"`
	Previous string `json:"previous"`
	Page     int    `json:"page"`
	Last     int    `json:"last"`
	Count    int    `json:"count"`
	Results  []Run  `json:"results"`
}

type ScheduleInfo added in v1.4.0

type ScheduleInfo struct {
	ID           string     `json:"id,omitempty"`
	Vault        string     `json:"vault,omitempty"`
	Date         *time.Time `json:"date,omitempty"`
	Workflow     string     `json:"workflow,omitempty"`
	RepeatPeriod int        `json:"repeat_period,omitempty"`
	Machines     *Machines  `json:"machines,omitempty"`
}

type Script

type Script struct {
	ID          uuid.UUID `json:"id"`
	Name        string    `json:"name"`
	Description string    `json:"description"`
	VaultInfo   uuid.UUID `json:"vault_info"`
	Author      string    `json:"author"`
	AuthorInfo  int       `json:"author_info"`
	Type        string    `json:"type"`
	Inputs      struct {
		File *struct {
			Type  string `json:"type"`
			Multi bool   `json:"multi"`
		} `json:"file,omitempty"`
		Folder *struct {
			Type  string `json:"type"`
			Multi bool   `json:"multi"`
		} `json:"folder,omitempty"`
	} `json:"inputs"`
	Outputs struct {
		File *struct {
			Type string `json:"type"`
		} `json:"file,omitempty"`
		Folder *struct {
			Type string `json:"type"`
		} `json:"folder,omitempty"`
	} `json:"outputs"`
	Script struct {
		Args   []interface{} `json:"args"`
		Image  string        `json:"image"`
		Source string        `json:"source"`
	} `json:"script"`
}

type ScriptImportRequest added in v1.7.1

type ScriptImportRequest struct {
	ID          *uuid.UUID `json:"id,omitempty"`
	VaultInfo   uuid.UUID  `json:"vault_info" yaml:"vault_info"`
	Name        string     `json:"name" yaml:"name"`
	Description string     `json:"description" yaml:"description"`
	ScriptType  string     `json:"script_type" yaml:"script_type"`
	Script      string     `json:"script" yaml:"script"`
}

type Scripts

type Scripts struct {
	Next     string   `json:"next"`
	Previous string   `json:"previous"`
	Page     int      `json:"page"`
	Last     int      `json:"last"`
	Count    int      `json:"count"`
	Results  []Script `json:"results"`
}

type SignedURL

type SignedURL struct {
	Url        string `json:"url"`
	Size       int    `json:"size"`
	PrettySize string `json:"pretty_size"`
}

type Space

type Space struct {
	ID           uuid.UUID `json:"id"`
	Name         string    `json:"name"`
	Description  string    `json:"description"`
	VaultInfo    uuid.UUID `json:"vault_info"`
	CreatedDate  time.Time `json:"created_date"`
	ModifiedDate time.Time `json:"modified_date"`
	Playground   bool      `json:"playground"`
}

type SpaceDetailed

type SpaceDetailed struct {
	ID             uuid.UUID  `json:"id"`
	Name           string     `json:"name"`
	Description    string     `json:"description"`
	VaultInfo      uuid.UUID  `json:"vault_info"`
	Playground     bool       `json:"playground"`
	Projects       []Project  `json:"projects"`
	ProjectsCount  int        `json:"projects_count"`
	Workflows      []Workflow `json:"workflows"`
	WorkflowsCount int        `json:"workflows_count"`
	CreatedDate    time.Time  `json:"created_date"`
	ModifiedDate   time.Time  `json:"modified_date"`
}

type Spaces

type Spaces struct {
	Next     string  `json:"next"`
	Previous string  `json:"previous"`
	Page     int     `json:"page"`
	Last     int     `json:"last"`
	Count    int     `json:"count"`
	Results  []Space `json:"results"`
}

type Splitter

type Splitter struct {
	ID          uuid.UUID `json:"id"`
	Name        string    `json:"name"`
	Description string    `json:"description"`
	VaultInfo   uuid.UUID `json:"vault_info"`
	Author      string    `json:"author"`
	AuthorInfo  int       `json:"author_info"`
	Type        string    `json:"type"`
	Inputs      struct {
		Multiple struct {
			Type  string `json:"type"`
			Multi bool   `json:"multi"`
		} `json:"multiple"`
	} `json:"inputs"`
	Outputs struct {
		Output struct {
			Type  string `json:"type"`
			Order *int   `json:"order,omitempty"`
		} `json:"output"`
	} `json:"outputs"`
}

type SplitterResponse

type SplitterResponse struct {
	Next     string     `json:"next"`
	Previous string     `json:"previous"`
	Page     int        `json:"page"`
	Last     int        `json:"last"`
	Count    int        `json:"count"`
	Results  []Splitter `json:"results"`
}

type SubJob

type SubJob struct {
	ID            uuid.UUID              `json:"id"`
	Status        string                 `json:"status"`
	Name          string                 `json:"name"`
	OutputsStatus string                 `json:"outputs_status"`
	Finished      bool                   `json:"finished"`
	StartedDate   time.Time              `json:"started_at"`
	FinishedDate  time.Time              `json:"finished_at"`
	Params        map[string]interface{} `json:"params"`
	Message       string                 `json:"message"`
	TaskGroup     bool                   `json:"task_group"`
	TaskIndex     int                    `json:"task_index"`
	Label         string
	Children      []SubJob
	TaskCount     int
}

type SubJobOutput

type SubJobOutput struct {
	ID         uuid.UUID `json:"id"`
	Name       string    `json:"name"`
	Size       int       `json:"size"`
	PrettySize string    `json:"pretty_size"`
	Format     string    `json:"format"`
	Path       string    `json:"path"`
	SignedURL  string    `json:"signed_url,omitempty"`
}

type SubJobOutputs

type SubJobOutputs struct {
	Next     string         `json:"next"`
	Previous string         `json:"previous"`
	Page     int            `json:"page"`
	Last     int            `json:"last"`
	Count    int            `json:"count"`
	Results  []SubJobOutput `json:"results"`
}

type SubJobs

type SubJobs struct {
	Next     string   `json:"next"`
	Previous string   `json:"previous"`
	Page     int      `json:"page"`
	Last     int      `json:"last"`
	Count    int      `json:"count"`
	Results  []SubJob `json:"results"`
}

type Tool

type Tool struct {
	ID               uuid.UUID            `json:"id"`
	Name             string               `json:"name"`
	Description      string               `json:"description"`
	VaultInfo        uuid.UUID            `json:"vault_info"`
	Author           string               `json:"author"`
	AuthorInfo       int                  `json:"author_info"`
	ToolCategory     string               `json:"tool_category"`
	ToolCategoryName string               `json:"tool_category_name"`
	Type             string               `json:"type"`
	Inputs           map[string]ToolInput `json:"inputs"`
	Container        *struct {
		Args    []string `json:"args,omitempty"`
		Image   string   `json:"image"`
		Command []string `json:"command"`
	} `json:"container,omitempty"`
	Outputs struct {
		Folder *struct {
			Type  string `json:"type"`
			Order int    `json:"order"`
		} `json:"folder,omitempty"`
		File *struct {
			Type  string `json:"type"`
			Order int    `json:"order"`
		} `json:"file,omitempty"`
	} `json:"outputs"`
	SourceURL     string    `json:"source_url"`
	CreatedDate   time.Time `json:"created_date"`
	ModifiedDate  time.Time `json:"modified_date"`
	OutputCommand string    `json:"output_command"`
	LicenseInfo   struct {
		Name string `json:"name"`
		Url  string `json:"url"`
	} `json:"license_info"`
	DocLink string `json:"doc_link"`
}

type ToolImportRequest added in v1.7.0

type ToolImportRequest struct {
	VaultInfo     uuid.UUID            `json:"vault_info" yaml:"vault_info"`
	Name          string               `json:"name" yaml:"name"`
	Description   string               `json:"description" yaml:"description"`
	Category      string               `json:"tool_category_name" yaml:"category"`
	CategoryID    uuid.UUID            `json:"tool_category" yaml:"tool_category"`
	OutputCommand string               `json:"output_command" yaml:"output_parameter"`
	SourceURL     string               `json:"source_url" yaml:"source_url"`
	DockerImage   string               `json:"docker_image" yaml:"docker_image"`
	Command       string               `json:"command" yaml:"command"`
	OutputType    string               `json:"output_type" yaml:"output_type"`
	Inputs        map[string]ToolInput `json:"inputs" yaml:"inputs"`
	LicenseInfo   struct {
		Name string `json:"name" yaml:"name"`
		Url  string `json:"url" yaml:"url"`
	} `json:"license_info" yaml:"license_info"`
	DocLink string `json:"doc_link" yaml:"doc_link"`
}

type ToolInput

type ToolInput struct {
	Type        string `json:"type"`
	Description string `json:"description"`
	Command     string `json:"command"`
	Order       int    `json:"order"`
	Visible     bool   `json:"visible"`
}

type Tools

type Tools struct {
	Next     string `json:"next"`
	Previous string `json:"previous"`
	Page     int    `json:"page"`
	Last     int    `json:"last"`
	Count    int    `json:"count"`
	Results  []Tool `json:"results"`
}

type TreeNode

type TreeNode struct {
	Name         string
	Label        string
	Inputs       *map[string]*NodeInput
	Printed      bool
	Parents      []*TreeNode
	Children     []*TreeNode
	Status       string
	Message      string
	OutputStatus string
	Duration     time.Duration
	Height       int
}

type TrickestFile

type TrickestFile struct {
	Id           uuid.UUID `json:"id"`
	Name         string    `json:"name"`
	VaultInfo    uuid.UUID `json:"vault_info"`
	Size         int       `json:"size"`
	ModifiedDate time.Time `json:"modified_date"`
}

type User

type User struct {
	ID            int     `json:"id"`
	IsActive      bool    `json:"is_active"`
	Email         string  `json:"email"`
	FirstName     string  `json:"first_name"`
	LastName      string  `json:"last_name"`
	Onboarding    bool    `json:"onboarding"`
	Profile       Profile `json:"profile"`
	InitialCredit int     `json:"initial_credit"`
}

type VaultInfo

type VaultInfo struct {
	ID           uuid.UUID `json:"id"`
	Name         string    `json:"name"`
	Type         int       `json:"type"`
	Metadata     string    `json:"metadata"`
	CreatedDate  time.Time `json:"created_date"`
	ModifiedDate time.Time `json:"modified_date"`
}

type Workflow

type Workflow struct {
	ID               uuid.UUID     `json:"id,omitempty"`
	Name             string        `json:"name,omitempty"`
	Description      string        `json:"description,omitempty"`
	SpaceInfo        *uuid.UUID    `json:"space_info,omitempty"`
	SpaceName        string        `json:"space_name,omitempty"`
	ProjectInfo      *uuid.UUID    `json:"project_info,omitempty"`
	ProjectName      string        `json:"project_name,omitempty"`
	ModifiedDate     *time.Time    `json:"modified_date,omitempty"`
	CreatedDate      time.Time     `json:"created_date,omitempty"`
	ScheduleInfo     *ScheduleInfo `json:"schedule_info,omitempty"`
	WorkflowCategory string        `json:"workflow_category,omitempty"`
	Author           string        `json:"author,omitempty"`
	Executing        bool          `json:"executing,omitempty"`
}

type WorkflowVersion

type WorkflowVersion struct {
	ID           uuid.UUID `json:"id"`
	CreatedDate  time.Time `json:"created_date"`
	Version      int       `json:"version"`
	WorkflowInfo uuid.UUID `json:"workflow_info"`
	Name         string    `json:"name"`
	Description  string    `json:"description"`
	Public       bool      `json:"public"`
	RunCount     int       `json:"run_count"`
	Snapshot     bool      `json:"snapshot"`
}

type WorkflowVersionData added in v1.6.4

type WorkflowVersionData struct {
	Nodes          map[string]*Node          `json:"nodes"`
	Connections    []Connection              `json:"connections"`
	PrimitiveNodes map[string]*PrimitiveNode `json:"primitiveNodes"`
	Annotations    map[string]*Annotation    `json:"annotation,omitempty"`
}

type WorkflowVersionDetailed

type WorkflowVersionDetailed struct {
	ID           uuid.UUID           `json:"id"`
	Version      int                 `json:"version"`
	WorkflowInfo uuid.UUID           `json:"workflow_info"`
	Name         *string             `json:"name,omitempty"`
	Description  string              `json:"description"`
	Public       bool                `json:"public"`
	CreatedDate  time.Time           `json:"created_date"`
	RunCount     int                 `json:"run_count"`
	MaxMachines  Machines            `json:"max_machines"`
	Snapshot     bool                `json:"snapshot"`
	Data         WorkflowVersionData `json:"data"`
}

type WorkflowVersionStripped

type WorkflowVersionStripped struct {
	ID           uuid.UUID           `json:"id"`
	WorkflowInfo uuid.UUID           `json:"workflow_info"`
	Name         *string             `json:"name,omitempty"`
	Description  string              `json:"description"`
	MaxMachines  Machines            `json:"max_machines"`
	Snapshot     bool                `json:"snapshot"`
	Data         WorkflowVersionData `json:"data"`
}

type WorkflowVersions

type WorkflowVersions struct {
	Next     string            `json:"next"`
	Previous string            `json:"previous"`
	Page     int               `json:"page"`
	Last     int               `json:"last"`
	Count    int               `json:"count"`
	Results  []WorkflowVersion `json:"results"`
}

type WorkflowYAML

type WorkflowYAML struct {
	Name     string             `yaml:"name"`
	Category *string            `yaml:"category,omitempty"`
	Steps    []WorkflowYAMLNode `yaml:"steps"`
}

type WorkflowYAMLNode

type WorkflowYAMLNode struct {
	Name    string      `yaml:"name"`
	ID      string      `yaml:"id"`
	Script  *string     `yaml:"script,omitempty"`
	Machine string      `yaml:"machine"`
	Inputs  interface{} `yaml:"inputs"`
}

type Workflows

type Workflows struct {
	Next     string     `json:"next"`
	Previous string     `json:"previous"`
	Page     int        `json:"page"`
	Last     int        `json:"last"`
	Count    int        `json:"count"`
	Results  []Workflow `json:"results"`
}

Jump to

Keyboard shortcuts

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