11from 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
411
512__all__ = [
613 "ServiceAccount" ,
714 "ServiceAccountManager" ,
815 "GroupServiceAccount" ,
916 "GroupServiceAccountManager" ,
17+ "GroupServiceAccountAccessToken" ,
18+ "GroupServiceAccountAccessTokenManager" ,
1019]
1120
1221
1322class ServiceAccount (RESTObject ):
1423 pass
1524
1625
17- class ServiceAccountManager (CreateMixin , ListMixin , RESTManager ):
26+ class ServiceAccountManager (CreateMixin [ ServiceAccount ] , ListMixin [ ServiceAccount ] ):
1827 _path = "/service_accounts"
1928 _obj_cls = ServiceAccount
20- _create_attrs = RequiredOptional (
21- optional = ("name" , "username" , "email" ),
22- )
29+ _create_attrs = RequiredOptional (optional = ("name" , "username" , "email" ))
2330
2431
2532class GroupServiceAccount (ObjectDeleteMixin , RESTObject ):
@@ -35,3 +42,20 @@ class GroupServiceAccountManager(
3542 _obj_cls = GroupServiceAccount
3643 _from_parent_attrs = {"group_id" : "id" }
3744 _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