api

package
v0.4.4 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 2021 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetProjectIDFromToken

func GetProjectIDFromToken(token string) (uint, error)

Types

type AuthCheckResponse

type AuthCheckResponse models.UserExternal

AuthCheckResponse is the user model response that is returned if the user is logged in

type Client

type Client struct {
	BaseURL        string
	HTTPClient     *http.Client
	Cookie         *http.Cookie
	CookieFilePath string
	Token          string
}

Client represents the client for the Porter API

func NewClient

func NewClient(baseURL string, cookieFileName string) *Client

NewClient constructs a new client based on a set of options

func NewClientWithToken

func NewClientWithToken(baseURL, token string) *Client

func (*Client) AuthCheck

func (c *Client) AuthCheck(ctx context.Context) (*AuthCheckResponse, error)

AuthCheck performs a check to ensure that the user is logged in

func (*Client) CreateAWSIntegration

func (c *Client) CreateAWSIntegration(
	ctx context.Context,
	projectID uint,
	createAWS *CreateAWSIntegrationRequest,
) (*CreateAWSIntegrationResponse, error)

CreateAWSIntegration creates an AWS integration with the given request options

func (*Client) CreateBasicAuthIntegration

func (c *Client) CreateBasicAuthIntegration(
	ctx context.Context,
	projectID uint,
	createBasic *CreateBasicAuthIntegrationRequest,
) (*CreateBasicAuthIntegrationResponse, error)

CreateBasicAuthIntegration creates a "basic auth" integration

func (*Client) CreateDNSRecord added in v0.4.0

func (c *Client) CreateDNSRecord(
	ctx context.Context,
	projectID, clusterID uint,
	createDNS *CreateDNSRecordRequest,
) (*CreateDNSRecordResponse, error)

CreateGithubAction creates a Github action with basic authentication

func (*Client) CreateDOCR

func (c *Client) CreateDOCR(
	ctx context.Context,
	projectID uint,
	createDOCR *CreateDOCRRequest,
) (*CreateDOCRResponse, error)

CreateDOCR creates an Digital Ocean Container Registry integration

func (*Client) CreateECR

func (c *Client) CreateECR(
	ctx context.Context,
	projectID uint,
	createECR *CreateECRRequest,
) (*CreateECRResponse, error)

CreateECR creates an Elastic Container Registry integration

func (*Client) CreateGCPIntegration

func (c *Client) CreateGCPIntegration(
	ctx context.Context,
	projectID uint,
	createGCP *CreateGCPIntegrationRequest,
) (*CreateGCPIntegrationResponse, error)

CreateGCPIntegration creates a GCP integration with the given request options

func (*Client) CreateGCR

func (c *Client) CreateGCR(
	ctx context.Context,
	projectID uint,
	createGCR *CreateGCRRequest,
) (*CreateGCRResponse, error)

CreateGCR creates an Google Container Registry integration

func (*Client) CreateGithubAction

func (c *Client) CreateGithubAction(
	ctx context.Context,
	projectID, clusterID uint,
	releaseName, releaseNamespace string,
	createGH *CreateGithubActionRequest,
) error

CreateGithubAction creates a Github action with basic authentication

func (*Client) CreateHelmRepo

func (c *Client) CreateHelmRepo(
	ctx context.Context,
	projectID uint,
	createHR *CreateHelmRepoRequest,
) (*CreateHelmRepoResponse, error)

CreateHelmRepo creates an Helm repository integration with basic authentication

func (*Client) CreatePrivateRegistry

func (c *Client) CreatePrivateRegistry(
	ctx context.Context,
	projectID uint,
	createPR *CreatePrivateRegistryRequest,
) (*CreatePrivateRegistryResponse, error)

CreatePrivateRegistry creates a private registry integration

func (*Client) CreateProject

func (c *Client) CreateProject(
	ctx context.Context,
	createProjectRequest *CreateProjectRequest,
) (*CreateProjectResponse, error)

CreateProject creates a project with the given request options

func (*Client) CreateProjectCandidates

func (c *Client) CreateProjectCandidates(
	ctx context.Context,
	projectID uint,
	createCandidatesRequest *CreateProjectCandidatesRequest,
) (CreateProjectCandidatesResponse, error)

CreateProjectCandidates creates a service account candidate for a given project, accepting a kubeconfig that gets parsed into a candidate

func (*Client) CreateProjectCluster

func (c *Client) CreateProjectCluster(
	ctx context.Context,
	projectID uint,
	candidateID uint,
	createReq *models.ClusterResolverAll,
) (*CreateProjectClusterResponse, error)

CreateProjectCluster creates a cluster given a project id and a candidate id, which gets resolved using the list of actions

func (*Client) CreateRepository added in v0.4.0

func (c *Client) CreateRepository(
	ctx context.Context,
	projectID, regID uint,
	createRepo *CreateRepositoryRequest,
) error

CreateECR creates an Elastic Container Registry integration

func (*Client) CreateUser

func (c *Client) CreateUser(
	ctx context.Context,
	createUserRequest *CreateUserRequest,
) (*CreateUserResponse, error)

CreateUser will create the user, authorize the user and grant them a cookie-based session

func (*Client) DeleteProject

func (c *Client) DeleteProject(ctx context.Context, projectID uint) (*DeleteProjectResponse, error)

DeleteProject deletes a project by id

func (*Client) DeleteProjectCluster

func (c *Client) DeleteProjectCluster(
	ctx context.Context,
	projectID uint,
	clusterID uint,
) error

DeleteProjectCluster deletes a cluster given a project id and cluster id

func (*Client) DeleteProjectRegistry

func (c *Client) DeleteProjectRegistry(
	ctx context.Context,
	projectID uint,
	registryID uint,
) error

DeleteProjectRegistry deletes a registry given a project id and registry id

func (*Client) DeleteUser

func (c *Client) DeleteUser(
	ctx context.Context,
	userID uint,
	deleteUserRequest *DeleteUserRequest,
) error

DeleteUser deletes a user of a given user id

func (*Client) DeployTemplate added in v0.4.0

func (c *Client) DeployTemplate(
	ctx context.Context,
	projID, clusterID uint,
	templateName string,
	templateVersion string,
	deployReq *DeployTemplateRequest,
) error

func (*Client) DeployWithWebhook added in v0.4.0

func (c *Client) DeployWithWebhook(
	ctx context.Context,
	webhook, tag string,
) error

DeployWithWebhook deploys an application with an image tag using a unique webhook URI

func (*Client) GetDOCRAuthorizationToken

func (c *Client) GetDOCRAuthorizationToken(
	ctx context.Context,
	projectID uint,
	docrRequest *GetDOCRTokenRequest,
) (*GetTokenResponse, error)

GetDOCRAuthorizationToken gets a DOCR authorization token

func (*Client) GetDockerhubAuthorizationToken

func (c *Client) GetDockerhubAuthorizationToken(
	ctx context.Context,
	projectID uint,
) (*GetTokenResponse, error)

GetDockerhubAuthorizationToken gets a Docker Hub authorization token

func (*Client) GetECRAuthorizationToken

func (c *Client) GetECRAuthorizationToken(
	ctx context.Context,
	projectID uint,
	region string,
) (*GetTokenResponse, error)

GetECRAuthorizationToken gets an ECR authorization token

func (*Client) GetGCRAuthorizationToken

func (c *Client) GetGCRAuthorizationToken(
	ctx context.Context,
	projectID uint,
	gcrRequest *GetGCRTokenRequest,
) (*GetTokenResponse, error)

GetGCRAuthorizationToken gets a GCR authorization token

func (*Client) GetK8sAllPods

func (c *Client) GetK8sAllPods(
	ctx context.Context,
	projectID, clusterID uint,
	namespace, name string,
) (GetReleaseAllPodsResponse, error)

GetK8sAllPods gets all pods for a given release

func (*Client) GetK8sNamespaces

func (c *Client) GetK8sNamespaces(
	ctx context.Context,
	projectID uint,
	clusterID uint,
) (*GetK8sNamespacesResponse, error)

GetK8sNamespaces gets a namespaces list in a k8s cluster

func (*Client) GetKubeconfig

func (c *Client) GetKubeconfig(
	ctx context.Context,
	projectID uint,
	clusterID uint,
) (*GetKubeconfigResponse, error)

GetK8sNamespaces gets a namespaces list in a k8s cluster

func (*Client) GetProject

func (c *Client) GetProject(ctx context.Context, projectID uint) (*GetProjectResponse, error)

GetProject retrieves a project by id

func (*Client) GetProjectCandidates

func (c *Client) GetProjectCandidates(
	ctx context.Context,
	projectID uint,
) (GetProjectCandidatesResponse, error)

GetProjectCandidates returns the service account candidates for a given project id

func (*Client) GetProjectCluster

func (c *Client) GetProjectCluster(
	ctx context.Context,
	projectID uint,
	clusterID uint,
) (*GetProjectClusterResponse, error)

GetProjectCluster retrieves a project's cluster by id

func (*Client) GetRelease added in v0.4.0

func (c *Client) GetRelease(
	ctx context.Context,
	projectID, clusterID uint,
	namespace, name string,
) (*GetReleaseResponse, error)

GetK8sAllPods gets all pods for a given release

func (*Client) GetReleaseWebhook added in v0.4.0

func (c *Client) GetReleaseWebhook(
	ctx context.Context,
	projID, clusterID uint,
	name, namespace string,
) (*GetReleaseWebhookResponse, error)

func (*Client) GetRepoZIPDownloadURL added in v0.4.0

func (c *Client) GetRepoZIPDownloadURL(
	ctx context.Context,
	projectID uint,
	gitActionConfig *models.GitActionConfigExternal,
) (*GetRepoTarballDownloadURLResp, error)

ListGitRepos returns a list of Git repos for a project

func (*Client) GetTemplate added in v0.4.0

func (c *Client) GetTemplate(
	ctx context.Context,
	name, version string,
) (*models.PorterChartRead, error)

func (*Client) GetUser

func (c *Client) GetUser(ctx context.Context, userID uint) (*GetUserResponse, error)

GetUser retrieves a user given a user id

func (*Client) ListCharts

func (c *Client) ListCharts(
	ctx context.Context,
	projectID uint,
	helmID uint,
) (ListChartsResponse, error)

ListCharts lists the charts in a Helm repository

func (*Client) ListGitRepos

func (c *Client) ListGitRepos(
	ctx context.Context,
	projectID uint,
) (ListGitRepoResponse, error)

ListGitRepos returns a list of Git repos for a project

func (*Client) ListGithubRepos added in v0.4.0

func (c *Client) ListGithubRepos(
	ctx context.Context,
	projectID, gitRepoID uint,
) (ListGithubReposResponse, error)

ListGitRepos returns a list of Git repos for a project

func (*Client) ListHelmRepos

func (c *Client) ListHelmRepos(
	ctx context.Context,
	projectID uint,
) (ListHelmRepoResponse, error)

ListHelmRepos returns a list of Helm repos for a project

func (*Client) ListImages

func (c *Client) ListImages(
	ctx context.Context,
	projectID uint,
	registryID uint,
	repoName string,
) (ListImagesResponse, error)

ListImages lists the images (repository+tag) in a repository

func (*Client) ListOAuthIntegrations

func (c *Client) ListOAuthIntegrations(
	ctx context.Context,
	projectID uint,
) (ListOAuthIntegrationResponse, error)

ListOAuthIntegrations lists the oauth integrations in a project

func (*Client) ListProjectClusters

func (c *Client) ListProjectClusters(
	ctx context.Context,
	projectID uint,
) (ListProjectClustersResponse, error)

ListProjectClusters creates a list of clusters for a given project

func (*Client) ListRegistries

func (c *Client) ListRegistries(
	ctx context.Context,
	projectID uint,
) (ListRegistryResponse, error)

ListRegistries returns a list of registries for a project

func (*Client) ListRegistryRepositories

func (c *Client) ListRegistryRepositories(
	ctx context.Context,
	projectID uint,
	registryID uint,
) (ListRegistryRepositoryResponse, error)

ListRegistryRepositories lists the repositories in a registry

func (*Client) ListTemplates added in v0.4.0

func (c *Client) ListTemplates(
	ctx context.Context,
) ([]*models.PorterChartList, error)

func (*Client) ListUserProjects

func (c *Client) ListUserProjects(ctx context.Context, userID uint) (ListUserProjectsResponse, error)

ListUserProjects returns a list of projects associated with a user

func (*Client) Login

func (c *Client) Login(ctx context.Context, loginRequest *LoginRequest) (*LoginResponse, error)

Login authorizes the user and grants them a cookie-based session

func (*Client) Logout

func (c *Client) Logout(ctx context.Context) error

Logout logs the user out and deauthorizes the cookie-based session

func (*Client) UpdateBatchImage added in v0.4.0

func (c *Client) UpdateBatchImage(
	ctx context.Context,
	projID, clusterID uint,
	namespace string,
	updateImageReq *UpdateBatchImageRequest,
) error

UpdateBatchImage updates all releases that use a certain image with a new tag

func (*Client) UpgradeRelease added in v0.4.0

func (c *Client) UpgradeRelease(
	ctx context.Context,
	projID, clusterID uint,
	name string,
	upgradeReq *UpgradeReleaseRequest,
) error

type CookieStorage

type CookieStorage struct {
	Cookie *http.Cookie `json:"cookie"`
}

CookieStorage for temporary fs-based cookie storage before jwt tokens

type CreateAWSIntegrationRequest

type CreateAWSIntegrationRequest struct {
	AWSRegion          string `json:"aws_region"`
	AWSAccessKeyID     string `json:"aws_access_key_id"`
	AWSSecretAccessKey string `json:"aws_secret_access_key"`
}

CreateAWSIntegrationRequest represents the accepted fields for creating an aws integration

type CreateAWSIntegrationResponse

type CreateAWSIntegrationResponse ints.AWSIntegrationExternal

CreateAWSIntegrationResponse is the resulting integration after creation

type CreateBasicAuthIntegrationRequest

type CreateBasicAuthIntegrationRequest struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

CreateBasicAuthIntegrationRequest represents the accepted fields for creating a "basic auth" integration

type CreateBasicAuthIntegrationResponse

type CreateBasicAuthIntegrationResponse ints.BasicIntegrationExternal

CreateBasicAuthIntegrationResponse is the resulting integration after creation

type CreateDNSRecordRequest added in v0.4.0

type CreateDNSRecordRequest struct {
	ReleaseName string `json:"release_name"`
}

type CreateDNSRecordResponse added in v0.4.0

type CreateDNSRecordResponse models.DNSRecordExternal

CreateDNSRecordResponse is the DNS record that was created

type CreateDOCRRequest

type CreateDOCRRequest struct {
	Name            string `json:"name"`
	DOIntegrationID uint   `json:"do_integration_id"`
	URL             string `json:"url"`
}

CreateDOCRRequest represents the accepted fields for creating a DOCR registry

type CreateDOCRResponse

type CreateDOCRResponse models.RegistryExternal

CreateDOCRResponse is the resulting registry after creation

type CreateECRRequest

type CreateECRRequest struct {
	Name             string `json:"name"`
	AWSIntegrationID uint   `json:"aws_integration_id"`
}

CreateECRRequest represents the accepted fields for creating an ECR registry

type CreateECRResponse

type CreateECRResponse models.RegistryExternal

CreateECRResponse is the resulting registry after creation

type CreateGCPIntegrationRequest

type CreateGCPIntegrationRequest struct {
	GCPKeyData string `json:"gcp_key_data"`
}

CreateGCPIntegrationRequest represents the accepted fields for creating a gcp integration

type CreateGCPIntegrationResponse

type CreateGCPIntegrationResponse ints.GCPIntegrationExternal

CreateGCPIntegrationResponse is the resulting integration after creation

type CreateGCRRequest

type CreateGCRRequest struct {
	Name             string `json:"name"`
	GCPIntegrationID uint   `json:"gcp_integration_id"`
	URL              string `json:"url"`
}

CreateGCRRequest represents the accepted fields for creating a GCR registry

type CreateGCRResponse

type CreateGCRResponse models.RegistryExternal

CreateGCRResponse is the resulting registry after creation

type CreateGithubActionRequest

type CreateGithubActionRequest struct {
	ReleaseID      uint              `json:"release_id" form:"required"`
	GitRepo        string            `json:"git_repo" form:"required"`
	GitBranch      string            `json:"git_branch"`
	ImageRepoURI   string            `json:"image_repo_uri" form:"required"`
	DockerfilePath string            `json:"dockerfile_path"`
	FolderPath     string            `json:"folder_path"`
	GitRepoID      uint              `json:"git_repo_id" form:"required"`
	BuildEnv       map[string]string `json:"env"`
	RegistryID     uint              `json:"registry_id"`
}

CreateGithubActionRequest represents the accepted fields for creating a Github action

type CreateHelmRepoRequest

type CreateHelmRepoRequest struct {
	Name               string `json:"name"`
	RepoURL            string `json:"repo_url"`
	BasicIntegrationID uint   `json:"basic_integration_id"`
}

CreateHelmRepoRequest represents the accepted fields for creating a Helm repository with basic authentication

type CreateHelmRepoResponse

type CreateHelmRepoResponse models.HelmRepoExternal

CreateHelmRepoResponse is the resulting helm repo after creation

type CreatePrivateRegistryRequest

type CreatePrivateRegistryRequest struct {
	Name               string `json:"name"`
	URL                string `json:"url"`
	BasicIntegrationID uint   `json:"basic_integration_id"`
}

CreatePrivateRegistryRequest represents the accepted fields for creating a private registry

type CreatePrivateRegistryResponse

type CreatePrivateRegistryResponse models.RegistryExternal

CreatePrivateRegistryResponse is the resulting registry after creation

type CreateProjectCandidatesRequest

type CreateProjectCandidatesRequest struct {
	Kubeconfig string `json:"kubeconfig"`
	IsLocal    bool   `json:"is_local"`
}

CreateProjectCandidatesRequest creates a project service account candidate, which can be resolved to create a service account

type CreateProjectCandidatesResponse

type CreateProjectCandidatesResponse []*models.ClusterCandidateExternal

CreateProjectCandidatesResponse is the list of candidates returned after creating the candidates

type CreateProjectClusterResponse

type CreateProjectClusterResponse models.ClusterExternal

CreateProjectClusterResponse is the cluster that gets returned after the candidate has been resolved

type CreateProjectRequest

type CreateProjectRequest struct {
	Name string `json:"name" form:"required"`
}

CreateProjectRequest represents the accepted fields for creating a project

type CreateProjectResponse

type CreateProjectResponse models.ProjectExternal

CreateProjectResponse is the resulting project after creation

type CreateRepositoryRequest added in v0.4.0

type CreateRepositoryRequest struct {
	ImageRepoURI string `json:"image_repo_uri"`
}

type CreateUserRequest

type CreateUserRequest struct {
	Email    string `json:"email"`
	Password string `json:"password"`
}

CreateUserRequest is the email/password associated with creating a user

type CreateUserResponse

type CreateUserResponse models.UserExternal

CreateUserResponse is the user model response that is returned after successfully creating a user

type DeleteProjectResponse

type DeleteProjectResponse models.ProjectExternal

DeleteProjectResponse is the object returned after project deletion

type DeleteUserRequest

type DeleteUserRequest struct {
	Password string `json:"password"`
}

DeleteUserRequest is the password needed to verify a user should be deleted

type DeployTemplateGitAction added in v0.4.0

type DeployTemplateGitAction struct {
	GitRepo        string            `json:"git_repo"`
	GitBranch      string            `json:"git_branch"`
	ImageRepoURI   string            `json:"image_repo_uri"`
	DockerfilePath string            `json:"dockerfile_path"`
	FolderPath     string            `json:"folder_path"`
	GitRepoID      uint              `json:"git_repo_id"`
	BuildEnv       map[string]string `json:"env"`
	RegistryID     uint              `json:"registry_id"`
}

type DeployTemplateRequest added in v0.4.0

type DeployTemplateRequest struct {
	TemplateName string                   `json:"templateName"`
	ImageURL     string                   `json:"imageURL"`
	FormValues   map[string]interface{}   `json:"formValues"`
	Namespace    string                   `json:"namespace"`
	Name         string                   `json:"name"`
	GitAction    *DeployTemplateGitAction `json:"github_action"`
}

type GetDOCRTokenRequest

type GetDOCRTokenRequest struct {
	ServerURL string `json:"server_url"`
}

type GetGCRTokenRequest

type GetGCRTokenRequest struct {
	ServerURL string `json:"server_url"`
}

type GetK8sNamespacesResponse

type GetK8sNamespacesResponse v1.NamespaceList

GetK8sNamespacesResponse is the list of namespaces returned when a user has successfully authenticated

type GetKubeconfigResponse

type GetKubeconfigResponse struct {
	Kubeconfig []byte `json:"kubeconfig"`
}

GetKubeconfigResponse is the list of namespaces returned when a user has successfully authenticated

type GetProjectCandidatesResponse

type GetProjectCandidatesResponse []*models.ClusterCandidateExternal

GetProjectCandidatesResponse is the list of service account candidates

type GetProjectClusterResponse

type GetProjectClusterResponse models.ClusterExternal

GetProjectClusterResponse is the response returned after querying for a given project's cluster

type GetProjectResponse

type GetProjectResponse models.ProjectExternal

GetProjectResponse is the response returned after querying for a given project

type GetReleaseAllPodsResponse

type GetReleaseAllPodsResponse []v1.Pod

GetReleaseAllPodsResponse is the list of all pods for a given Helm release

type GetReleaseResponse added in v0.4.0

type GetReleaseResponse api.PorterRelease

GetReleaseLatestRevision gets the latest revision of a Helm release

type GetReleaseWebhookResponse added in v0.4.0

type GetReleaseWebhookResponse models.ReleaseExternal

GetReleaseLatestRevision gets the latest revision of a Helm release

type GetRepoTarballDownloadURLResp added in v0.4.0

type GetRepoTarballDownloadURLResp api.HandleGetRepoZIPDownloadURLResp

type GetTokenResponse

type GetTokenResponse struct {
	Token     string     `json:"token"`
	ExpiresAt *time.Time `json:"expires_at"`
}

GetTokenResponse blah

type GetUserResponse

type GetUserResponse models.UserExternal

GetUserResponse is the user model response that is returned after successfully getting a user

type HTTPError

type HTTPError struct {
	Code   uint     `json:"code"`
	Errors []string `json:"errors"`
}

HTTPError is the Porter error response returned if a request fails

type ListChartsResponse

type ListChartsResponse []models.PorterChartList

ListChartsResponse is the list of charts in a Helm repository

type ListGitRepoResponse

type ListGitRepoResponse []models.GitRepoExternal

ListGitRepoResponse is the list of Git repo integrations for a project

type ListGithubReposResponse added in v0.4.0

type ListGithubReposResponse []*api.Repo

ListGitRepoResponse is the list of Git repo integrations for a project

type ListHelmRepoResponse

type ListHelmRepoResponse []models.HelmRepoExternal

ListHelmRepoResponse is the list of Helm repos for a project

type ListImagesResponse

type ListImagesResponse []registry.Image

ListImagesResponse is the list of images in a repository

type ListOAuthIntegrationResponse

type ListOAuthIntegrationResponse []ints.OAuthIntegrationExternal

ListOAuthIntegrationResponse is the list of oauth integrations in a project

type ListProjectClustersResponse

type ListProjectClustersResponse []models.ClusterExternal

ListProjectClustersResponse lists the linked clusters for a project

type ListRegistryRepositoryResponse

type ListRegistryRepositoryResponse []registry.Repository

ListRegistryRepositoryResponse is the list of repositories in a registry

type ListRegistryResponse

type ListRegistryResponse []models.RegistryExternal

ListRegistryResponse is the list of registries for a project

type ListUserProjectsResponse

type ListUserProjectsResponse []*models.ProjectExternal

ListUserProjectsResponse is the list of projects returned

type LoginRequest

type LoginRequest struct {
	Email    string `json:"email"`
	Password string `json:"password"`
}

LoginRequest is the email/password associated with a login request

type LoginResponse

type LoginResponse models.UserExternal

LoginResponse is the user model response that is returned after successfully logging in

type TokenProjectID

type TokenProjectID struct {
	ProjectID uint `json:"project_id"`
}

type UpdateBatchImageRequest added in v0.4.0

type UpdateBatchImageRequest struct {
	ImageRepoURI string `json:"image_repo_uri"`
	Tag          string `json:"tag"`
}

type UpgradeReleaseRequest added in v0.4.0

type UpgradeReleaseRequest struct {
	Values    string `json:"values"`
	Namespace string `json:"namespace"`
}

Jump to

Keyboard shortcuts

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