## ParseContextURL `client.Runners.ParseContextURL(ctx, body) (*RunnerParseContextURLResponse, error)` **post** `/gitpod.v1.RunnerService/ParseContextURL` Parses a context URL and returns the parsed result. Use this method to: - Validate context URLs - Check repository access - Verify branch existence Returns: - FAILED_PRECONDITION if authentication is required - PERMISSION_DENIED if access is not allowed - INVALID_ARGUMENT if URL is invalid - NOT_FOUND if repository/branch doesn't exist ### Examples - Parse URL: Parses and validates a context URL. ```yaml contextUrl: "https://github.com/org/repo/tree/main" ``` ### Parameters - `body RunnerParseContextURLParams` - `ContextURL param.Field[string]` - `RunnerID param.Field[string]` ### Returns - `type RunnerParseContextURLResponse struct{…}` - `Git RunnerParseContextURLResponseGit` - `Branch string` - `CloneURL string` - `Commit string` - `Host string` - `Owner string` - `Repo string` - `Tag string` - `UpstreamRemoteURL string` - `Issue RunnerParseContextURLResponseIssue` - `ID string` id is the source system's ID of this issue, e.g. BNFRD-6100 - `Title string` - `OriginalContextURL string` - `Pr RunnerParseContextURLResponsePr` Deprecated: Use top-level PullRequest message instead - `ID string` - `FromBranch string` - `Title string` - `ToBranch string` - `ProjectIDs []string` project_ids is a list of projects to which the context URL belongs to. - `PullRequest RunnerParseContextURLResponsePullRequest` PullRequest represents pull request metadata from source control systems. This message is used across workflow triggers, executions, and agent contexts to maintain consistent PR information throughout the system. - `ID string` Unique identifier from the source system (e.g., "123" for GitHub PR #123) - `Author string` Author name as provided by the SCM system - `Draft bool` Whether this is a draft pull request - `FromBranch string` Source branch name (the branch being merged from) - `Repository RunnerParseContextURLResponsePullRequestRepository` Repository information - `CloneURL string` - `Host string` - `Name string` - `Owner string` - `State State` Current state of the pull request - `const StateUnspecified State = "STATE_UNSPECIFIED"` - `const StateOpen State = "STATE_OPEN"` - `const StateClosed State = "STATE_CLOSED"` - `const StateMerged State = "STATE_MERGED"` - `Title string` Pull request title - `ToBranch string` Target branch name (the branch being merged into) - `URL string` Pull request URL (e.g., "https://github.com/owner/repo/pull/123") - `ScmID string` scm_id is the unique identifier of the SCM provider (e.g., "github", "gitlab", "bitbucket") ### Example ```go package main import ( "context" "fmt" "github.com/gitpod-io/gitpod-sdk-go" "github.com/gitpod-io/gitpod-sdk-go/option" ) func main() { client := gitpod.NewClient( option.WithBearerToken("My Bearer Token"), ) response, err := client.Runners.ParseContextURL(context.TODO(), gitpod.RunnerParseContextURLParams{ ContextURL: gitpod.F("https://github.com/org/repo/tree/main"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Git) } ``` #### Response ```json { "git": { "branch": "branch", "cloneUrl": "cloneUrl", "commit": "commit", "host": "host", "owner": "owner", "repo": "repo", "tag": "tag", "upstreamRemoteUrl": "upstreamRemoteUrl" }, "issue": { "id": "id", "title": "title" }, "originalContextUrl": "originalContextUrl", "pr": { "id": "id", "fromBranch": "fromBranch", "title": "title", "toBranch": "toBranch" }, "projectIds": [ "string" ], "pullRequest": { "id": "id", "author": "author", "draft": true, "fromBranch": "fromBranch", "repository": { "cloneUrl": "cloneUrl", "host": "host", "name": "name", "owner": "owner" }, "state": "STATE_UNSPECIFIED", "title": "title", "toBranch": "toBranch", "url": "url" }, "scmId": "scmId" } ```