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
):
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)
}
}