1
1
from gitlab .base import RESTManager , RESTObject
2
- from gitlab .mixins import CreateMixin , DeleteMixin , ListMixin , ObjectDeleteMixin
3
- from gitlab .types import RequiredOptional
2
+ from gitlab .mixins import (
3
+ CreateMixin ,
4
+ DeleteMixin ,
5
+ ListMixin ,
6
+ RotateMixin ,
7
+ ObjectDeleteMixin ,
8
+ ObjectRotateMixin ,
9
+ )
10
+ from gitlab .types import RequiredOptional , ArrayAttribute
4
11
5
12
__all__ = [
6
13
"ServiceAccount" ,
7
14
"ServiceAccountManager" ,
8
15
"GroupServiceAccount" ,
9
16
"GroupServiceAccountManager" ,
17
+ "GroupServiceAccountAccessToken" ,
18
+ "GroupServiceAccountAccessTokenManager" ,
10
19
]
11
20
12
21
@@ -33,3 +42,18 @@ class GroupServiceAccountManager(CreateMixin, DeleteMixin, ListMixin, RESTManage
33
42
_create_attrs = RequiredOptional (
34
43
optional = ("name" , "username" ),
35
44
)
45
+
46
+
47
+ class GroupServiceAccountAccessToken (ObjectRotateMixin , RESTObject ):
48
+ pass
49
+
50
+
51
+ class GroupServiceAccountAccessTokenManager (CreateMixin , RotateMixin , RESTManager ):
52
+ _path = "/groups/{group_id}/service_accounts/{user_id}/personal_access_tokens"
53
+ _obj_cls = GroupServiceAccountAccessToken
54
+ _from_parent_attrs = {"group_id" : "id" , "user_id" : "user_id" }
55
+ _create_attrs = RequiredOptional (
56
+ required = ("name" , "scopes" ),
57
+ optional = ("expires_at" ,),
58
+ )
59
+ _types = {"scopes" : ArrayAttribute }
0 commit comments