1919]
2020
2121
22+ class GroupServiceAccountAccessToken (ObjectRotateMixin ,RESTObject ):
23+ pass
24+
25+
26+ class GroupServiceAccountAccessTokenManager (
27+ CreateMixin [GroupServiceAccountAccessToken ],
28+ RotateMixin [GroupServiceAccountAccessToken ],
29+ ):
30+ _path = "/groups/{group_id}/service_accounts/{user_id}/personal_access_tokens"
31+ _obj_cls = GroupServiceAccountAccessToken
32+ _from_parent_attrs = {"group_id" :"group_id" ,"user_id" :"id" }
33+ _create_attrs = RequiredOptional (
34+ required = ("name" ,"scopes" ),optional = ("expires_at" ,)
35+ )
36+ _types = {"scopes" :ArrayAttribute }
37+
38+
2239class ServiceAccount (RESTObject ):
2340pass
2441
@@ -30,7 +47,7 @@ class ServiceAccountManager(CreateMixin[ServiceAccount], ListMixin[ServiceAccoun
3047
3148
3249class GroupServiceAccount (ObjectDeleteMixin ,RESTObject ):
33- pass
50+ access_tokens : GroupServiceAccountAccessTokenManager
3451
3552
3653class GroupServiceAccountManager (
@@ -42,20 +59,3 @@ class GroupServiceAccountManager(
4259_obj_cls = GroupServiceAccount
4360_from_parent_attrs = {"group_id" :"id" }
4461_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 }