diff --git a/config.yaml b/config.yaml index 8065bf3..cf73a36 100644 --- a/config.yaml +++ b/config.yaml @@ -207,6 +207,7 @@ Organization: - OrganizationGet - OrganizationUpdate - PermissionsGet + - PermissionsSet - PermissionsUpdate - UserOrganizationCreate - UserOrganizationsList diff --git a/handler/organization/organization.go b/handler/organization/organization.go index f3a90e1..6316948 100644 --- a/handler/organization/organization.go +++ b/handler/organization/organization.go @@ -76,6 +76,11 @@ type Handler interface { // https://api.aiven.io/doc/#tag/Permissions/operation/PermissionsGet PermissionsGet(ctx context.Context, organizationId string, resourceType ResourceType, resourceId string) ([]PermissionOut, error) + // PermissionsSet [EXPERIMENTAL] Set permissions + // PUT /v1/organization/{organization_id}/permissions/{resource_type}/{resource_id} + // https://api.aiven.io/doc/#tag/Permissions/operation/PermissionsSet + PermissionsSet(ctx context.Context, organizationId string, resourceType ResourceType, resourceId string, in *PermissionsSetIn) error + // PermissionsUpdate [EXPERIMENTAL] Update permissions // PATCH /v1/organization/{organization_id}/permissions/{resource_type}/{resource_id} // https://api.aiven.io/doc/#tag/Permissions/operation/PermissionsUpdate @@ -250,6 +255,11 @@ func (h *OrganizationHandler) PermissionsGet(ctx context.Context, organizationId } return out.Permissions, nil } +func (h *OrganizationHandler) PermissionsSet(ctx context.Context, organizationId string, resourceType ResourceType, resourceId string, in *PermissionsSetIn) error { + path := fmt.Sprintf("/v1/organization/%s/permissions/%s/%s", url.PathEscape(organizationId), url.PathEscape(string(resourceType)), url.PathEscape(resourceId)) + _, err := h.doer.Do(ctx, "PermissionsSet", "PUT", path, in) + return err +} func (h *OrganizationHandler) PermissionsUpdate(ctx context.Context, organizationId string, resourceType ResourceType, resourceId string, in *PermissionsUpdateIn) error { path := fmt.Sprintf("/v1/organization/%s/permissions/%s/%s", url.PathEscape(organizationId), url.PathEscape(string(resourceType)), url.PathEscape(resourceId)) _, err := h.doer.Do(ctx, "PermissionsUpdate", "PATCH", path, in) @@ -465,6 +475,11 @@ type PermissionOut struct { UpdateTime time.Time `json:"update_time"` // Update Time } +// PermissionsSetIn PermissionsSetRequestBody +type PermissionsSetIn struct { + Permissions []PermissionIn `json:"permissions"` // List of roles to set +} + // PermissionsUpdateIn PermissionsUpdateRequestBody type PermissionsUpdateIn struct { Permissions []PermissionIn `json:"permissions"` // List of roles to set