A permission scheme is a collection of permission grants. A permission grant consists of a holder
and a permission
.
The holder
object contains information about the user or group being granted the permission. For example, the Administer projects permission is granted to a group named Teams in space administrators . In this case, the type is "type": "group"
, and the parameter is the group name, "parameter": "Teams in space administrators"
. The holder
object is defined by the following properties:
type
Identifies the user or group (see the list of types below).
parameter
The value of this property depends on the type
. For example, if the type
is a group, then you need to specify the group name.
The following types
are available. The expected values for the parameter
are given in parenthesis (some types
may not have a parameter
):
Grant for anonymous users.
Grant for the user currently assigned to an issue.
Grant for the specified group (group name).
Grant for a user in the group selected in the specified custom field (custom field ID).
Grant for a project lead.
Grant for the specified project role (project role ID).
Grant for the user who reported the issue.
Jira Service Desk only. Grants customers permission to access the customer portal but not Jira
Grant for the specified user (user ID - historically this was the userkey but that is deprecated and the account ID should be used).
Grant for a user selected in the specified custom field (custom field ID).
Get all permission schemes
GET /rest/api/{2-3}/permissionscheme
Returns all permission schemes.
Copy package main
import (
"context"
_ "github.com/ctreminiom/go-atlassian/jira/v3"
"github.com/ctreminiom/go-atlassian/jira/v2"
"log"
"os"
)
func main () {
/*
----------- Set an environment variable in git bash -----------
export HOST="https://ctreminiom.atlassian.net/"
export MAIL="MAIL_ADDRESS"
export TOKEN="TOKEN_API"
Docs: https://stackoverflow.com/questions/34169721/set-an-environment-variable-in-git-bash
*/
var (
host = os.Getenv( "HOST" )
mail = os.Getenv( "MAIL" )
token = os.Getenv( "TOKEN" )
)
atlassian, err := v2.New( nil , host)
if err != nil {
log.Fatal(err)
}
atlassian.Auth.SetBasicAuth(mail, token)
permissionSchemes, response, err := atlassian.Permission.Scheme.Gets(context.Background())
if err != nil {
log.Fatal(err)
}
log.Println( "HTTP Endpoint Used" , response.Endpoint)
for _, permissionScheme := range permissionSchemes.PermissionSchemes {
log.Println(permissionScheme.ID, permissionScheme.Name)
}
}
Get permission scheme
GET /rest/api/{2-3}/permissionscheme/{schemeId}
Returns a permission scheme.
Copy package main
import (
"context"
_ "github.com/ctreminiom/go-atlassian/jira/v3"
"github.com/ctreminiom/go-atlassian/jira/v2"
"log"
"os"
)
func main () {
/*
----------- Set an environment variable in git bash -----------
export HOST="https://ctreminiom.atlassian.net/"
export MAIL="MAIL_ADDRESS"
export TOKEN="TOKEN_API"
Docs: https://stackoverflow.com/questions/34169721/set-an-environment-variable-in-git-bash
*/
var (
host = os.Getenv( "HOST" )
mail = os.Getenv( "MAIL" )
token = os.Getenv( "TOKEN" )
)
atlassian, err := v2.New( nil , host)
if err != nil {
log.Fatal(err)
}
atlassian.Auth.SetBasicAuth(mail, token)
var (
permissionSchemeID = 10001
expand = [] string { "field" , "group" , "permissions" , "projectRole" , "user" }
)
permissionScheme, response, err := atlassian.Permission.Scheme.Get(context.Background(), permissionSchemeID, expand)
if err != nil {
log.Fatal(err)
}
log.Println( "HTTP Endpoint Used" , response.Endpoint)
log.Println(permissionScheme)
}
Create permission scheme
POST /rest/api/{2-3}/permissionscheme
Creates a new permission scheme. You can create a permission scheme with or without defining a set of permission grants.
Copy package main
import (
"context"
_ "github.com/ctreminiom/go-atlassian/jira/v3"
"github.com/ctreminiom/go-atlassian/jira/v2"
"github.com/ctreminiom/go-atlassian/pkg/infra/models"
"log"
"os"
)
func main () {
/*
----------- Set an environment variable in git bash -----------
export HOST="https://ctreminiom.atlassian.net/"
export MAIL="MAIL_ADDRESS"
export TOKEN="TOKEN_API"
Docs: https://stackoverflow.com/questions/34169721/set-an-environment-variable-in-git-bash
*/
var (
host = os.Getenv( "HOST" )
mail = os.Getenv( "MAIL" )
token = os.Getenv( "TOKEN" )
)
atlassian, err := v2.New( nil , host)
if err != nil {
log.Fatal(err)
}
atlassian.Auth.SetBasicAuth(mail, token)
payload := & models . PermissionSchemeScheme {
Name: "EF Permission Scheme" ,
Description: "EF Permission Scheme description" ,
Permissions: [] * models . PermissionGrantScheme {
{
Permission: "ADMINISTER_PROJECTS" ,
Holder: & models . PermissionGrantHolderScheme {
Parameter: "jira-administrators-system" ,
Type: "group" ,
},
},
{
Permission: "CLOSE_ISSUES" ,
Holder: & models . PermissionGrantHolderScheme {
Type: "assignee" ,
},
},
},
}
permissionScheme, response, err := atlassian.Permission.Scheme.Create(context.Background(), payload)
if err != nil {
log.Fatal(err)
}
log.Println( "HTTP Endpoint Used" , response.Endpoint)
log.Println(permissionScheme)
}
Delete permission scheme
DELETE /rest/api/{2-3}/permissionscheme/{schemeId}
Deletes a permission scheme.
Copy package main
import (
"context"
_ "github.com/ctreminiom/go-atlassian/jira/v3"
"github.com/ctreminiom/go-atlassian/jira/v2"
"log"
"os"
)
func main () {
/*
----------- Set an environment variable in git bash -----------
export HOST="https://ctreminiom.atlassian.net/"
export MAIL="MAIL_ADDRESS"
export TOKEN="TOKEN_API"
Docs: https://stackoverflow.com/questions/34169721/set-an-environment-variable-in-git-bash
*/
var (
host = os.Getenv( "HOST" )
mail = os.Getenv( "MAIL" )
token = os.Getenv( "TOKEN" )
)
atlassian, err := v2.New( nil , host)
if err != nil {
log.Fatal(err)
}
atlassian.Auth.SetBasicAuth(mail, token)
var permissionSchemeID = 10004
response, err := atlassian.Permission.Scheme.Delete(context.Background(), permissionSchemeID)
if err != nil {
log.Fatal(err)
}
log.Println( "HTTP Endpoint Used" , response.Endpoint)
}
Update permission scheme
PUT /rest/api/{2-3}/permissionscheme/{schemeId}
Updates a permission scheme
Copy package main
import (
"context"
_ "github.com/ctreminiom/go-atlassian/jira/v3"
"github.com/ctreminiom/go-atlassian/jira/v2"
"github.com/ctreminiom/go-atlassian/pkg/infra/models"
"log"
"os"
)
func main () {
/*
----------- Set an environment variable in git bash -----------
export HOST="https://ctreminiom.atlassian.net/"
export MAIL="MAIL_ADDRESS"
export TOKEN="TOKEN_API"
Docs: https://stackoverflow.com/questions/34169721/set-an-environment-variable-in-git-bash
*/
var (
host = os.Getenv( "HOST" )
mail = os.Getenv( "MAIL" )
token = os.Getenv( "TOKEN" )
)
atlassian, err := v2.New( nil , host)
if err != nil {
log.Fatal(err)
}
atlassian.Auth.SetBasicAuth(mail, token)
payload := & models . PermissionSchemeScheme {
Name: "EF Permission Scheme - UPDATED" ,
Description: "EF Permission Scheme description - UPDATED" ,
Permissions: [] * models . PermissionGrantScheme {
{
Permission: "CLOSE_ISSUES" ,
Holder: & models . PermissionGrantHolderScheme {
Parameter: "jira-administrators-system" ,
Type: "group" ,
},
},
},
}
permissionScheme, response, err := atlassian.Permission.Scheme.Update(context.Background(), 10004 , payload)
if err != nil {
log.Fatal(err)
}
log.Println( "HTTP Endpoint Used" , response.Endpoint)
log.Println(permissionScheme.Name)
log.Println(permissionScheme.ID)
log.Println(permissionScheme.Description)
log.Println(permissionScheme.Self)
for _, permissionGrant := range permissionScheme.Permissions {
log.Println(permissionGrant.ID, permissionGrant.Permission)
}
}