forked from ctreminiom/go-atlassian
/
permission.go
108 lines (92 loc) · 4.82 KB
/
permission.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package jira
import (
"context"
model "github.com/ctreminiom/go-atlassian/pkg/infra/models"
)
type PermissionConnector interface {
// Gets returns all permissions, including: global permissions, project permissions and global permissions added by plugins.
//
// GET /rest/api/{2-3}/permissions
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions#get-my-permissions
Gets(ctx context.Context) ([]*model.PermissionScheme, *model.ResponseScheme, error)
// Check search the permissions linked to an accountID, then check if the user permissions.
//
// POST /rest/api/{2-3}/permissions/check
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions#check-permissions
Check(ctx context.Context, payload *model.PermissionCheckPayload) (*model.PermissionGrantsScheme, *model.ResponseScheme, error)
// Projects returns all the projects where the user is granted a list of project permissions.
//
// POST /rest/api/{2-3}/permissions/project
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions#get-permitted-projects
Projects(ctx context.Context, permissions []string) (*model.PermittedProjectsScheme, *model.ResponseScheme, error)
}
type PermissionSchemeConnector interface {
// Gets returns all permission schemes.
//
// GET /rest/api/{2-3}/permissionscheme
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions/scheme#get-all-permission-schemes
Gets(ctx context.Context) (*model.PermissionSchemePageScheme, *model.ResponseScheme, error)
// Get returns a permission scheme.
//
// GET /rest/api/{2-3}/permissionscheme/{schemeId}
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions/scheme#get-permission-scheme
Get(ctx context.Context, permissionSchemeId int, expand []string) (*model.PermissionSchemeScheme, *model.ResponseScheme, error)
// Delete deletes a permission scheme.
//
// DELETE /rest/api/{2-3}/permissionscheme/{schemeId}
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions/scheme#delete-permission-scheme
Delete(ctx context.Context, permissionSchemeId int) (*model.ResponseScheme, error)
// Create creates a new permission scheme.
//
// You can create a permission scheme with or without defining a set of permission grants.
//
// POST /rest/api/{2-3}/permissionscheme
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions/scheme#create-permission-scheme
Create(ctx context.Context, payload *model.PermissionSchemeScheme) (*model.PermissionSchemeScheme, *model.ResponseScheme, error)
// Update updates a permission scheme.
// Below are some important things to note when using this resource:
//
// 1. If a permissions list is present in the request, then it is set in the permission scheme, overwriting all existing grants.
//
// 2. If you want to update only the name and description, then do not send a permissions list in the request.
//
// 3. Sending an empty list will remove all permission grants from the permission scheme.
//
// PUT /rest/api/{2-3}/permissionscheme/{schemeId}
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions/scheme#update-permission-scheme
Update(ctx context.Context, permissionSchemeId int, payload *model.PermissionSchemeScheme) (*model.PermissionSchemeScheme, *model.ResponseScheme, error)
}
type PermissionSchemeGrantConnector interface {
// Create creates a permission grant in a permission scheme.
//
// POST /rest/api/{2-3}/permissionscheme/{schemeId}/permission
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions/scheme/grant#create-permission-grant
Create(ctx context.Context, permissionSchemeId int, payload *model.PermissionGrantPayloadScheme) (*model.PermissionGrantScheme, *model.ResponseScheme, error)
// Gets returns all permission grants for a permission scheme.
//
// GET /rest/api/{2-3}/permissionscheme/{schemeId}/permission
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions/scheme/grant#get-permission-scheme-grants
Gets(ctx context.Context, permissionSchemeId int, expand []string) (*model.PermissionSchemeGrantsScheme, *model.ResponseScheme, error)
// Get returns a permission grant.
//
// GET /rest/api/{2-3}/permissionscheme/{schemeId}/permission/{permissionId}
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions/scheme/grant#get-permission-scheme-grant
Get(ctx context.Context, permissionSchemeId, permissionGrantId int, expand []string) (*model.PermissionGrantScheme, *model.ResponseScheme, error)
// Delete deletes a permission grant from a permission scheme. See About permission schemes and grants for more details.
//
// DELETE /rest/api/{2-3}/permissionscheme/{schemeId}/permission/{permissionId}
//
// https://docs.go-atlassian.io/jira-software-cloud/permissions/scheme/grant#delete-permission-scheme-grant
Delete(ctx context.Context, permissionSchemeId, permissionGrantId int) (*model.ResponseScheme, error)
}