package gerrit // AccessService contains Access Right related REST endpoints // // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html type AccessService struct { client *Client } // AccessSectionInfo describes the access rights that are assigned on a ref. // // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html#access-section-info type AccessSectionInfo struct { Permissions map[string]PermissionInfo `json:"permissions"` } // PermissionInfo entity contains information about an assigned permission. // // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html#permission-info type PermissionInfo struct { Label string `json:"label,omitempty"` Exclusive bool `json:"exclusive"` Rules map[string]PermissionRuleInfo `json:"rules"` } // PermissionRuleInfo entity contains information about a permission rule that is assigned to group. // // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html#permission-rule-info type PermissionRuleInfo struct { // TODO Possible values for action: ALLOW, DENY or BLOCK, INTERACTIVE and BATCH Action string `json:"action"` Force bool `json:"force"` Min int `json:"min"` Max int `json:"max"` } // ProjectAccessInfo entity contains information about the access rights for a project. // // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html#project-access-info type ProjectAccessInfo struct { Revision string `json:"revision"` InheritsFrom ProjectInfo `json:"inherits_from"` Local map[string]AccessSectionInfo `json:"local"` IsOwner bool `json:"is_owner"` OwnerOf []string `json:"owner_of"` CanUpload bool `json:"can_upload"` CanAdd bool `json:"can_add"` ConfigVisible bool `json:"config_visible"` } // ListAccessRightsOptions specifies the parameters to the AccessService.ListAccessRights. type ListAccessRightsOptions struct { // The projects for which the access rights should be returned must be specified as project options. // The project can be specified multiple times. Project []string `url:"project,omitempty"` } // ListAccessRights lists the access rights for projects. // As result a map is returned that maps the project name to ProjectAccessInfo entities. // The entries in the map are sorted by project name. // // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html#list-access func (s *AccessService) ListAccessRights(opt *ListAccessRightsOptions) (*map[string]ProjectAccessInfo, *Response, error) { u := "access/" u, err := addOptions(u, opt) if err != nil { return nil, nil, err } v := new(map[string]ProjectAccessInfo) resp, err := s.client.Call("GET", u, nil, v) return v, resp, err }