@@ -2425,7 +2425,7 @@ def get_all_members(self, group_name="confluence-users", expand=None):
2425
2425
else :
2426
2426
members .extend (values )
2427
2427
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" )
2429
2429
return members
2430
2430
2431
2431
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):
3315
3315
url = "rest/api/user/%s/group/%s" % (username , group_name )
3316
3316
return self .put (url )
3317
3317
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
+
3318
3562
def add_space_permissions (
3319
3563
self ,
3320
3564
space_key ,
0 commit comments