Skip to content
Ona Docs

ShareResourceWithPrincipal

client.Groups.Shares.New(ctx, body) (*GroupShareNewResponse, error)
POST/gitpod.v1.GroupService/ShareResourceWithPrincipal

Shares a resource directly with a principal (user or service account).

Use this method to:

  • Grant a user or service account direct access to a runner, project, or other resource
  • Share resources without creating and managing groups manually

Examples

  • Share a runner with a user:

    Grants admin access to a runner for a specific user.

    resourceType: RESOURCE_TYPE_RUNNER
    resourceId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
    principal: PRINCIPAL_USER
    principalId: "f53d2330-3795-4c5d-a1f3-453121af9c60"
    role: RESOURCE_ROLE_RUNNER_ADMIN
  • Share a runner with a service account:

    Grants user access to a runner for a service account.

    resourceType: RESOURCE_TYPE_RUNNER
    resourceId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
    principal: PRINCIPAL_SERVICE_ACCOUNT
    principalId: "a1b2c3d4-5678-90ab-cdef-1234567890ab"
    role: RESOURCE_ROLE_RUNNER_USER

Authorization

Requires admin role on the specific resource.

ParametersExpand Collapse
body GroupShareNewParams
Principal param.Field[Principal]Optional

Type of principal to share with (user or service account)

PrincipalID param.Field[string]Optional

ID of the principal (user or service account) to share with

formatuuid
ResourceID param.Field[string]Optional

ID of the resource to share

formatuuid
ResourceType param.Field[ResourceType]Optional

Type of resource to share (runner, project, etc.)

Role param.Field[ResourceRole]Optional

Role to grant the principal on the resource

ReturnsExpand Collapse
type GroupShareNewResponse interface{…}

Empty response on success

ShareResourceWithPrincipal

package main

import (
  "context"
  "fmt"

  "github.com/gitpod-io/gitpod-sdk-go"
  "github.com/gitpod-io/gitpod-sdk-go/option"
  "github.com/gitpod-io/gitpod-sdk-go/shared"
)

func main() {
  client := gitpod.NewClient(
    option.WithBearerToken("My Bearer Token"),
  )
  share, err := client.Groups.Shares.New(context.TODO(), gitpod.GroupShareNewParams{
    Principal: gitpod.F(shared.PrincipalServiceAccount),
    PrincipalID: gitpod.F("a1b2c3d4-5678-90ab-cdef-1234567890ab"),
    ResourceID: gitpod.F("d2c94c27-3b76-4a42-b88c-95a85e392c68"),
    ResourceType: gitpod.F(shared.ResourceTypeRunner),
    Role: gitpod.F(shared.ResourceRoleRunnerUser),
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", share)
}
{}
Returns Examples
{}