@@ -2425,7 +2425,7 @@ def get_all_members(self, group_name="confluence-users", expand=None):
24252425 else :
24262426 members .extend (values )
24272427 if not members :
2428- print (( f"Did not get members from { group_name } group, please check permissions or connectivity" ) )
2428+ print (f"Did not get members from { group_name } group, please check permissions or connectivity" )
24292429 return members
24302430
24312431 def get_space (self , space_key , expand = "description.plain,homepage" , params = None ):
@@ -3315,6 +3315,250 @@ def add_user_to_group(self, username, group_name):
33153315 url = "rest/api/user/%s/group/%s" % (username , group_name )
33163316 return self .put (url )
33173317
3318+ # Space Permissions
3319+ def get_all_space_permissions (self , space_key ):
3320+ """
3321+ Returns list of permissions granted to users and groups in the particular space.
3322+ :param space_key:
3323+ :return:
3324+ """
3325+ url = f"rest/api/space/{ space_key } /permissions"
3326+ return self .get (url )
3327+
3328+ def set_permissions_to_multiple_items_for_space (self , space_key , user_key = None , group_name = None , operations = None ):
3329+ """
3330+ Sets permissions to multiple users/groups in the given space.
3331+ Request should contain all permissions that user/group/anonymous user will have in a given space.
3332+ If permission is absent in the request, but was granted before, it will be revoked.
3333+ If empty list of permissions passed to user/group/anonymous user,
3334+ then all their existing permissions will be revoked.
3335+ If user/group/anonymous user not mentioned in the request, their permissions will not be revoked.
3336+
3337+ Maximum 40 different users/groups/anonymous user could be passed in the request.
3338+ :param space_key:
3339+ :param user_key:
3340+ :param group_name:
3341+ :param operations:
3342+ :return:
3343+ """
3344+ url = f"rest/api/space/{ space_key } /permissions"
3345+ params = []
3346+
3347+ if user_key :
3348+ params .append ({"userKey" : user_key , "operations" : operations or []})
3349+
3350+ if group_name :
3351+ params .append ({"groupName" : group_name , "operations" : operations or []})
3352+
3353+ if not user_key and not group_name :
3354+ params .append ({"operations" : operations or []})
3355+ payload_json = json .dumps (params )
3356+ return self .post (url , data = payload_json )
3357+
3358+ def get_permissions_granted_to_anonymous_for_space (self , space_key ):
3359+ """
3360+ Get permissions granted to anonymous user for the given space
3361+ :param space_key:
3362+ :return:
3363+ """
3364+ url = f"rest/api/space/{ space_key } /permissions/anonymous"
3365+ return self .get (url )
3366+
3367+ def set_permissions_to_anonymous_for_space (self , space_key , operations = None ):
3368+ """
3369+ Grant permissions to anonymous user in the given space. Operation doesn't override existing permissions,
3370+ will only add those one that weren't granted before. Multiple permissions could be passed in one request.
3371+ Supported targetType and operationKey pairs:
3372+
3373+ space read
3374+ space administer
3375+ space export
3376+ space restrict
3377+ space delete_own
3378+ space delete_mail
3379+ page create
3380+ page delete
3381+ blogpost create
3382+ blogpost delete
3383+ comment create
3384+ comment delete
3385+ attachment create
3386+ attachment delete
3387+ :param space_key:
3388+ :param operations:
3389+ :return:
3390+ """
3391+ url = f"rest/api/space/{ space_key } /permissions/anonymous"
3392+ data = {"operations" : operations or []}
3393+ return self .put (url , data = data )
3394+
3395+ def remove_permissions_from_anonymous_for_space (self , space_key , operations = None ):
3396+ """
3397+ Revoke permissions from anonymous user in the given space.
3398+ If anonymous user doesn't have permissions that we are trying to revoke,
3399+ those permissions will be silently skipped. Multiple permissions could be passed in one request.
3400+ Supported targetType and operationKey pairs:
3401+
3402+ space read
3403+ space administer
3404+ space export
3405+ space restrict
3406+ space delete_own
3407+ space delete_mail
3408+ page create
3409+ page delete
3410+ blogpost create
3411+ blogpost delete
3412+ comment create
3413+ comment delete
3414+ attachment create
3415+ attachment delete
3416+ :param space_key:
3417+ :param operations:
3418+ :return:
3419+ """
3420+ url = f"rest/api/space/{ space_key } /permissions/anonymous/revoke"
3421+ data = {"operations" : operations or []}
3422+ return self .put (url , data = data )
3423+
3424+ def get_permissions_granted_to_group_for_space (self , space_key , group_name ):
3425+ """
3426+ Get permissions granted to group for the given space
3427+ :param space_key:
3428+ :param group_name:
3429+ :return:
3430+ """
3431+ url = f"rest/api/space/{ space_key } /permissions/group/{ group_name } "
3432+ return self .get (url )
3433+
3434+ def set_permissions_to_group_for_space (self , space_key , group_name , operations = None ):
3435+ """
3436+ Grant permissions to group in the given space.
3437+ Operation doesn't override existing permissions, will only add those one that weren't granted before.
3438+ Multiple permissions could be passed in one request. Supported targetType and operationKey pairs:
3439+
3440+ space read
3441+ space administer
3442+ space export
3443+ space restrict
3444+ space delete_own
3445+ space delete_mail
3446+ page create
3447+ page delete
3448+ blogpost create
3449+ blogpost delete
3450+ comment create
3451+ comment delete
3452+ attachment create
3453+ attachment delete
3454+ :param space_key:
3455+ :param group_name:
3456+ :param operations:
3457+ :return:
3458+ """
3459+ url = f"rest/api/space/{ space_key } /permissions/group/{ group_name } "
3460+ data = {"operations" : operations or []}
3461+ return self .put (url , data = data )
3462+
3463+ def remove_permissions_from_group_for_space (self , space_key , group_name , operations = None ):
3464+ """
3465+ Revoke permissions from a group in the given space.
3466+ If group doesn't have permissions that we are trying to revoke,
3467+ those permissions will be silently skipped. Multiple permissions could be passed in one request.
3468+ Supported targetType and operationKey pairs:
3469+
3470+ space read
3471+ space administer
3472+ space export
3473+ space restrict
3474+ space delete_own
3475+ space delete_mail
3476+ page create
3477+ page delete
3478+ blogpost create
3479+ blogpost delete
3480+ comment create
3481+ comment delete
3482+ attachment create
3483+ attachment delete
3484+ :param space_key:
3485+ :param group_name:
3486+ :param operations:
3487+ :return:
3488+ """
3489+ url = f"rest/api/space/{ space_key } /permissions/group/{ group_name } /revoke"
3490+ data = {"operations" : operations or []}
3491+ return self .put (url , data = data )
3492+
3493+ def get_permissions_granted_to_user_for_space (self , space_key , user_key ):
3494+ """
3495+ Get permissions granted to user for the given space
3496+ :param space_key:
3497+ :param user_key:
3498+ :return:
3499+ """
3500+ url = f"rest/api/space/{ space_key } /permissions/user/{ user_key } "
3501+ return self .get (url )
3502+
3503+ def set_permissions_to_user_for_space (self , space_key , user_key , operations = None ):
3504+ """
3505+ Grant permissions to user in the given space.
3506+ Operation doesn't override existing permissions, will only add those one that weren't granted before.
3507+ Multiple permissions could be passed in one request. Supported targetType and operationKey pairs:
3508+
3509+ space read
3510+ space administer
3511+ space export
3512+ space restrict
3513+ space delete_own
3514+ space delete_mail
3515+ page create
3516+ page delete
3517+ blogpost create
3518+ blogpost delete
3519+ comment create
3520+ comment delete
3521+ attachment create
3522+ attachment delete
3523+ :param space_key:
3524+ :param user_key:
3525+ :param operations:
3526+ :return:
3527+ """
3528+ url = f"rest/api/space/{ space_key } /permissions/user/{ user_key } "
3529+ data = {"operations" : operations or []}
3530+ return self .put (url , data = data )
3531+
3532+ def remove_permissions_from_user_for_space (self , space_key , user_key , operations = None ):
3533+ """
3534+ Revoke permissions from a user in the given space.
3535+ If user doesn't have permissions that we are trying to revoke,
3536+ those permissions will be silently skipped. Multiple permissions could be passed in one request.
3537+ Supported targetType and operationKey pairs:
3538+
3539+ space read
3540+ space administer
3541+ space export
3542+ space restrict
3543+ space delete_own
3544+ space delete_mail
3545+ page create
3546+ page delete
3547+ blogpost create
3548+ blogpost delete
3549+ comment create
3550+ comment delete
3551+ attachment create
3552+ attachment delete
3553+ :param space_key:
3554+ :param user_key:
3555+ :param operations:
3556+ :return:
3557+ """
3558+ url = f"rest/api/space/{ space_key } /permissions/user/{ user_key } /revoke"
3559+ data = {"operations" : operations or []}
3560+ return self .put (url , params = data )
3561+
33183562 def add_space_permissions (
33193563 self ,
33203564 space_key ,
0 commit comments