1
1
from gitlab .base import 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
+ ObjectDeleteMixin ,
7
+ ObjectRotateMixin ,
8
+ RotateMixin ,
9
+ )
10
+ from gitlab .types import ArrayAttribute , RequiredOptional
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
13
22
class ServiceAccount (RESTObject ):
14
23
pass
15
24
16
25
17
- class ServiceAccountManager (CreateMixin , ListMixin , RESTManager ):
26
+ class ServiceAccountManager (CreateMixin [ ServiceAccount ] , ListMixin [ ServiceAccount ] ):
18
27
_path = "/service_accounts"
19
28
_obj_cls = ServiceAccount
20
- _create_attrs = RequiredOptional (
21
- optional = ("name" , "username" , "email" ),
22
- )
29
+ _create_attrs = RequiredOptional (optional = ("name" , "username" , "email" ))
23
30
24
31
25
32
class GroupServiceAccount (ObjectDeleteMixin , RESTObject ):
@@ -35,3 +42,20 @@ class GroupServiceAccountManager(
35
42
_obj_cls = GroupServiceAccount
36
43
_from_parent_attrs = {"group_id" : "id" }
37
44
_create_attrs = RequiredOptional (optional = ("name" , "username" ))
45
+
46
+
47
+ class GroupServiceAccountAccessToken (ObjectRotateMixin , RESTObject ):
48
+ pass
49
+
50
+
51
+ class GroupServiceAccountAccessTokenManager (
52
+ CreateMixin [GroupServiceAccountAccessToken ],
53
+ RotateMixin [GroupServiceAccountAccessToken ],
54
+ ):
55
+ _path = "/groups/{group_id}/service_accounts/{user_id}/personal_access_tokens"
56
+ _obj_cls = GroupServiceAccountAccessToken
57
+ _from_parent_attrs = {"group_id" : "id" , "user_id" : "user_id" }
58
+ _create_attrs = RequiredOptional (
59
+ required = ("name" , "scopes" ), optional = ("expires_at" ,)
60
+ )
61
+ _types = {"scopes" : ArrayAttribute }
0 commit comments