stackit-authorization 0.2.3__tar.gz → 0.2.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/PKG-INFO +1 -1
  2. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/pyproject.toml +1 -1
  3. stackit_authorization-0.2.5/src/stackit/authorization/__init__.py +99 -0
  4. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/api/default_api.py +29 -29
  5. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/api_client.py +18 -5
  6. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/configuration.py +33 -11
  7. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/exceptions.py +20 -1
  8. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/__init__.py +1 -1
  9. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/add_members_payload.py +3 -3
  10. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/error_response.py +2 -2
  11. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/existing_permission.py +5 -5
  12. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/list_members_response.py +3 -3
  13. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/list_permissions_response.py +2 -2
  14. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/list_user_memberships_response.py +2 -2
  15. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/list_user_permissions_response.py +2 -2
  16. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/member.py +5 -5
  17. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/members_response.py +3 -3
  18. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/permission.py +5 -5
  19. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/remove_members_payload.py +3 -3
  20. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/role.py +5 -5
  21. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/roles_response.py +3 -3
  22. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/user_membership.py +5 -5
  23. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/user_permission.py +3 -3
  24. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/models/zookie.py +2 -2
  25. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/rest.py +2 -2
  26. stackit_authorization-0.2.3/src/stackit/authorization/__init__.py +0 -57
  27. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/LICENSE.md +0 -0
  28. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/NOTICE.txt +0 -0
  29. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/README.md +0 -0
  30. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/api/__init__.py +0 -0
  31. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/api_response.py +0 -0
  32. {stackit_authorization-0.2.3 → stackit_authorization-0.2.5}/src/stackit/authorization/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: stackit-authorization
3
- Version: 0.2.3
3
+ Version: 0.2.5
4
4
  Summary: STACKIT Membership API
5
5
  Author: STACKIT Developer Tools
6
6
  Author-email: developer-tools@stackit.cloud
@@ -3,7 +3,7 @@ name = "stackit-authorization"
3
3
 
4
4
  [tool.poetry]
5
5
  name = "stackit-authorization"
6
- version = "v0.2.3"
6
+ version = "v0.2.5"
7
7
  authors = [
8
8
  "STACKIT Developer Tools <developer-tools@stackit.cloud>",
9
9
  ]
@@ -0,0 +1,99 @@
1
+ # coding: utf-8
2
+
3
+ # flake8: noqa
4
+
5
+ """
6
+ STACKIT Membership API
7
+
8
+ The Membership API is used to manage memberships, roles and permissions of STACKIT resources, like projects, folders, organizations and other resources.
9
+
10
+ The version of the OpenAPI document: 2.0
11
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
12
+
13
+ Do not edit the class manually.
14
+ """ # noqa: E501
15
+
16
+
17
+ __version__ = "1.0.0"
18
+
19
+ # Define package exports
20
+ __all__ = [
21
+ "DefaultApi",
22
+ "ApiResponse",
23
+ "ApiClient",
24
+ "HostConfiguration",
25
+ "OpenApiException",
26
+ "ApiTypeError",
27
+ "ApiValueError",
28
+ "ApiKeyError",
29
+ "ApiAttributeError",
30
+ "ApiException",
31
+ "AddMembersPayload",
32
+ "ErrorResponse",
33
+ "ExistingPermission",
34
+ "ListMembersResponse",
35
+ "ListPermissionsResponse",
36
+ "ListUserMembershipsResponse",
37
+ "ListUserPermissionsResponse",
38
+ "Member",
39
+ "MembersResponse",
40
+ "Permission",
41
+ "RemoveMembersPayload",
42
+ "Role",
43
+ "RolesResponse",
44
+ "UserMembership",
45
+ "UserPermission",
46
+ "Zookie",
47
+ ]
48
+
49
+ # import apis into sdk package
50
+ from stackit.authorization.api.default_api import DefaultApi as DefaultApi
51
+ from stackit.authorization.api_client import ApiClient as ApiClient
52
+
53
+ # import ApiClient
54
+ from stackit.authorization.api_response import ApiResponse as ApiResponse
55
+ from stackit.authorization.configuration import HostConfiguration as HostConfiguration
56
+ from stackit.authorization.exceptions import ApiAttributeError as ApiAttributeError
57
+ from stackit.authorization.exceptions import ApiException as ApiException
58
+ from stackit.authorization.exceptions import ApiKeyError as ApiKeyError
59
+ from stackit.authorization.exceptions import ApiTypeError as ApiTypeError
60
+ from stackit.authorization.exceptions import ApiValueError as ApiValueError
61
+ from stackit.authorization.exceptions import OpenApiException as OpenApiException
62
+
63
+ # import models into sdk package
64
+ from stackit.authorization.models.add_members_payload import (
65
+ AddMembersPayload as AddMembersPayload,
66
+ )
67
+ from stackit.authorization.models.error_response import ErrorResponse as ErrorResponse
68
+ from stackit.authorization.models.existing_permission import (
69
+ ExistingPermission as ExistingPermission,
70
+ )
71
+ from stackit.authorization.models.list_members_response import (
72
+ ListMembersResponse as ListMembersResponse,
73
+ )
74
+ from stackit.authorization.models.list_permissions_response import (
75
+ ListPermissionsResponse as ListPermissionsResponse,
76
+ )
77
+ from stackit.authorization.models.list_user_memberships_response import (
78
+ ListUserMembershipsResponse as ListUserMembershipsResponse,
79
+ )
80
+ from stackit.authorization.models.list_user_permissions_response import (
81
+ ListUserPermissionsResponse as ListUserPermissionsResponse,
82
+ )
83
+ from stackit.authorization.models.member import Member as Member
84
+ from stackit.authorization.models.members_response import (
85
+ MembersResponse as MembersResponse,
86
+ )
87
+ from stackit.authorization.models.permission import Permission as Permission
88
+ from stackit.authorization.models.remove_members_payload import (
89
+ RemoveMembersPayload as RemoveMembersPayload,
90
+ )
91
+ from stackit.authorization.models.role import Role as Role
92
+ from stackit.authorization.models.roles_response import RolesResponse as RolesResponse
93
+ from stackit.authorization.models.user_membership import (
94
+ UserMembership as UserMembership,
95
+ )
96
+ from stackit.authorization.models.user_permission import (
97
+ UserPermission as UserPermission,
98
+ )
99
+ from stackit.authorization.models.zookie import Zookie as Zookie
@@ -9,7 +9,7 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from typing import Any, Dict, List, Optional, Tuple, Union
15
15
 
@@ -92,7 +92,7 @@ class DefaultApi:
92
92
  in the spec for a single request.
93
93
  :type _host_index: int, optional
94
94
  :return: Returns the result object.
95
- """ # noqa: E501 docstring might be too long
95
+ """ # noqa: E501
96
96
 
97
97
  _param = self._add_members_serialize(
98
98
  resource_id=resource_id,
@@ -159,7 +159,7 @@ class DefaultApi:
159
159
  in the spec for a single request.
160
160
  :type _host_index: int, optional
161
161
  :return: Returns the result object.
162
- """ # noqa: E501 docstring might be too long
162
+ """ # noqa: E501
163
163
 
164
164
  _param = self._add_members_serialize(
165
165
  resource_id=resource_id,
@@ -226,7 +226,7 @@ class DefaultApi:
226
226
  in the spec for a single request.
227
227
  :type _host_index: int, optional
228
228
  :return: Returns the result object.
229
- """ # noqa: E501 docstring might be too long
229
+ """ # noqa: E501
230
230
 
231
231
  _param = self._add_members_serialize(
232
232
  resource_id=resource_id,
@@ -264,7 +264,7 @@ class DefaultApi:
264
264
  _query_params: List[Tuple[str, str]] = []
265
265
  _header_params: Dict[str, Optional[str]] = _headers or {}
266
266
  _form_params: List[Tuple[str, str]] = []
267
- _files: Dict[str, Union[str, bytes]] = {}
267
+ _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {}
268
268
  _body_params: Optional[bytes] = None
269
269
 
270
270
  # process the path parameters
@@ -353,7 +353,7 @@ class DefaultApi:
353
353
  in the spec for a single request.
354
354
  :type _host_index: int, optional
355
355
  :return: Returns the result object.
356
- """ # noqa: E501 docstring might be too long
356
+ """ # noqa: E501
357
357
 
358
358
  _param = self._list_members_serialize(
359
359
  resource_type=resource_type,
@@ -424,7 +424,7 @@ class DefaultApi:
424
424
  in the spec for a single request.
425
425
  :type _host_index: int, optional
426
426
  :return: Returns the result object.
427
- """ # noqa: E501 docstring might be too long
427
+ """ # noqa: E501
428
428
 
429
429
  _param = self._list_members_serialize(
430
430
  resource_type=resource_type,
@@ -495,7 +495,7 @@ class DefaultApi:
495
495
  in the spec for a single request.
496
496
  :type _host_index: int, optional
497
497
  :return: Returns the result object.
498
- """ # noqa: E501 docstring might be too long
498
+ """ # noqa: E501
499
499
 
500
500
  _param = self._list_members_serialize(
501
501
  resource_type=resource_type,
@@ -535,7 +535,7 @@ class DefaultApi:
535
535
  _query_params: List[Tuple[str, str]] = []
536
536
  _header_params: Dict[str, Optional[str]] = _headers or {}
537
537
  _form_params: List[Tuple[str, str]] = []
538
- _files: Dict[str, Union[str, bytes]] = {}
538
+ _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {}
539
539
  _body_params: Optional[bytes] = None
540
540
 
541
541
  # process the path parameters
@@ -614,7 +614,7 @@ class DefaultApi:
614
614
  in the spec for a single request.
615
615
  :type _host_index: int, optional
616
616
  :return: Returns the result object.
617
- """ # noqa: E501 docstring might be too long
617
+ """ # noqa: E501
618
618
 
619
619
  _param = self._list_permissions_serialize(
620
620
  resource_type=resource_type,
@@ -677,7 +677,7 @@ class DefaultApi:
677
677
  in the spec for a single request.
678
678
  :type _host_index: int, optional
679
679
  :return: Returns the result object.
680
- """ # noqa: E501 docstring might be too long
680
+ """ # noqa: E501
681
681
 
682
682
  _param = self._list_permissions_serialize(
683
683
  resource_type=resource_type,
@@ -740,7 +740,7 @@ class DefaultApi:
740
740
  in the spec for a single request.
741
741
  :type _host_index: int, optional
742
742
  :return: Returns the result object.
743
- """ # noqa: E501 docstring might be too long
743
+ """ # noqa: E501
744
744
 
745
745
  _param = self._list_permissions_serialize(
746
746
  resource_type=resource_type,
@@ -776,7 +776,7 @@ class DefaultApi:
776
776
  _query_params: List[Tuple[str, str]] = []
777
777
  _header_params: Dict[str, Optional[str]] = _headers or {}
778
778
  _form_params: List[Tuple[str, str]] = []
779
- _files: Dict[str, Union[str, bytes]] = {}
779
+ _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {}
780
780
  _body_params: Optional[bytes] = None
781
781
 
782
782
  # process the path parameters
@@ -854,7 +854,7 @@ class DefaultApi:
854
854
  in the spec for a single request.
855
855
  :type _host_index: int, optional
856
856
  :return: Returns the result object.
857
- """ # noqa: E501 docstring might be too long
857
+ """ # noqa: E501
858
858
 
859
859
  _param = self._list_roles_serialize(
860
860
  resource_type=resource_type,
@@ -921,7 +921,7 @@ class DefaultApi:
921
921
  in the spec for a single request.
922
922
  :type _host_index: int, optional
923
923
  :return: Returns the result object.
924
- """ # noqa: E501 docstring might be too long
924
+ """ # noqa: E501
925
925
 
926
926
  _param = self._list_roles_serialize(
927
927
  resource_type=resource_type,
@@ -988,7 +988,7 @@ class DefaultApi:
988
988
  in the spec for a single request.
989
989
  :type _host_index: int, optional
990
990
  :return: Returns the result object.
991
- """ # noqa: E501 docstring might be too long
991
+ """ # noqa: E501
992
992
 
993
993
  _param = self._list_roles_serialize(
994
994
  resource_type=resource_type,
@@ -1026,7 +1026,7 @@ class DefaultApi:
1026
1026
  _query_params: List[Tuple[str, str]] = []
1027
1027
  _header_params: Dict[str, Optional[str]] = _headers or {}
1028
1028
  _form_params: List[Tuple[str, str]] = []
1029
- _files: Dict[str, Union[str, bytes]] = {}
1029
+ _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {}
1030
1030
  _body_params: Optional[bytes] = None
1031
1031
 
1032
1032
  # process the path parameters
@@ -1110,7 +1110,7 @@ class DefaultApi:
1110
1110
  in the spec for a single request.
1111
1111
  :type _host_index: int, optional
1112
1112
  :return: Returns the result object.
1113
- """ # noqa: E501 docstring might be too long
1113
+ """ # noqa: E501
1114
1114
 
1115
1115
  _param = self._list_user_memberships_serialize(
1116
1116
  email=email,
@@ -1185,7 +1185,7 @@ class DefaultApi:
1185
1185
  in the spec for a single request.
1186
1186
  :type _host_index: int, optional
1187
1187
  :return: Returns the result object.
1188
- """ # noqa: E501 docstring might be too long
1188
+ """ # noqa: E501
1189
1189
 
1190
1190
  _param = self._list_user_memberships_serialize(
1191
1191
  email=email,
@@ -1260,7 +1260,7 @@ class DefaultApi:
1260
1260
  in the spec for a single request.
1261
1261
  :type _host_index: int, optional
1262
1262
  :return: Returns the result object.
1263
- """ # noqa: E501 docstring might be too long
1263
+ """ # noqa: E501
1264
1264
 
1265
1265
  _param = self._list_user_memberships_serialize(
1266
1266
  email=email,
@@ -1302,7 +1302,7 @@ class DefaultApi:
1302
1302
  _query_params: List[Tuple[str, str]] = []
1303
1303
  _header_params: Dict[str, Optional[str]] = _headers or {}
1304
1304
  _form_params: List[Tuple[str, str]] = []
1305
- _files: Dict[str, Union[str, bytes]] = {}
1305
+ _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {}
1306
1306
  _body_params: Optional[bytes] = None
1307
1307
 
1308
1308
  # process the path parameters
@@ -1396,7 +1396,7 @@ class DefaultApi:
1396
1396
  in the spec for a single request.
1397
1397
  :type _host_index: int, optional
1398
1398
  :return: Returns the result object.
1399
- """ # noqa: E501 docstring might be too long
1399
+ """ # noqa: E501
1400
1400
 
1401
1401
  _param = self._list_user_permissions_serialize(
1402
1402
  email=email,
@@ -1471,7 +1471,7 @@ class DefaultApi:
1471
1471
  in the spec for a single request.
1472
1472
  :type _host_index: int, optional
1473
1473
  :return: Returns the result object.
1474
- """ # noqa: E501 docstring might be too long
1474
+ """ # noqa: E501
1475
1475
 
1476
1476
  _param = self._list_user_permissions_serialize(
1477
1477
  email=email,
@@ -1546,7 +1546,7 @@ class DefaultApi:
1546
1546
  in the spec for a single request.
1547
1547
  :type _host_index: int, optional
1548
1548
  :return: Returns the result object.
1549
- """ # noqa: E501 docstring might be too long
1549
+ """ # noqa: E501
1550
1550
 
1551
1551
  _param = self._list_user_permissions_serialize(
1552
1552
  email=email,
@@ -1590,7 +1590,7 @@ class DefaultApi:
1590
1590
  _query_params: List[Tuple[str, str]] = []
1591
1591
  _header_params: Dict[str, Optional[str]] = _headers or {}
1592
1592
  _form_params: List[Tuple[str, str]] = []
1593
- _files: Dict[str, Union[str, bytes]] = {}
1593
+ _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {}
1594
1594
  _body_params: Optional[bytes] = None
1595
1595
 
1596
1596
  # process the path parameters
@@ -1678,7 +1678,7 @@ class DefaultApi:
1678
1678
  in the spec for a single request.
1679
1679
  :type _host_index: int, optional
1680
1680
  :return: Returns the result object.
1681
- """ # noqa: E501 docstring might be too long
1681
+ """ # noqa: E501
1682
1682
 
1683
1683
  _param = self._remove_members_serialize(
1684
1684
  resource_id=resource_id,
@@ -1745,7 +1745,7 @@ class DefaultApi:
1745
1745
  in the spec for a single request.
1746
1746
  :type _host_index: int, optional
1747
1747
  :return: Returns the result object.
1748
- """ # noqa: E501 docstring might be too long
1748
+ """ # noqa: E501
1749
1749
 
1750
1750
  _param = self._remove_members_serialize(
1751
1751
  resource_id=resource_id,
@@ -1812,7 +1812,7 @@ class DefaultApi:
1812
1812
  in the spec for a single request.
1813
1813
  :type _host_index: int, optional
1814
1814
  :return: Returns the result object.
1815
- """ # noqa: E501 docstring might be too long
1815
+ """ # noqa: E501
1816
1816
 
1817
1817
  _param = self._remove_members_serialize(
1818
1818
  resource_id=resource_id,
@@ -1850,7 +1850,7 @@ class DefaultApi:
1850
1850
  _query_params: List[Tuple[str, str]] = []
1851
1851
  _header_params: Dict[str, Optional[str]] = _headers or {}
1852
1852
  _form_params: List[Tuple[str, str]] = []
1853
- _files: Dict[str, Union[str, bytes]] = {}
1853
+ _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {}
1854
1854
  _body_params: Optional[bytes] = None
1855
1855
 
1856
1856
  # process the path parameters
@@ -9,7 +9,7 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  import datetime
15
15
  import json
@@ -331,6 +331,10 @@ class ApiClient:
331
331
  else:
332
332
  obj_dict = obj.__dict__
333
333
 
334
+ if isinstance(obj_dict, list):
335
+ # here we handle instances that can either be a list or something else, and only became a real list by calling to_dict() # noqa: E501
336
+ return self.sanitize_for_serialization(obj_dict)
337
+
334
338
  return {key: self.sanitize_for_serialization(val) for key, val in obj_dict.items()}
335
339
 
336
340
  def deserialize(self, response_text: str, response_type: str, content_type: Optional[str]):
@@ -350,12 +354,12 @@ class ApiClient:
350
354
  data = json.loads(response_text)
351
355
  except ValueError:
352
356
  data = response_text
353
- elif content_type.startswith("application/json"):
357
+ elif re.match(r"^application/(json|[\w!#$&.+-^_]+\+json)\s*(;|$)", content_type, re.IGNORECASE):
354
358
  if response_text == "":
355
359
  data = ""
356
360
  else:
357
361
  data = json.loads(response_text)
358
- elif content_type.startswith("text/plain"):
362
+ elif re.match(r"^text\/[a-z.+-]+\s*(;|$)", content_type, re.IGNORECASE):
359
363
  data = response_text
360
364
  else:
361
365
  raise ApiException(status=0, reason="Unsupported content type: {0}".format(content_type))
@@ -457,7 +461,7 @@ class ApiClient:
457
461
  if k in collection_formats:
458
462
  collection_format = collection_formats[k]
459
463
  if collection_format == "multi":
460
- new_params.extend((k, str(value)) for value in v)
464
+ new_params.extend((k, quote(str(value))) for value in v)
461
465
  else:
462
466
  if collection_format == "ssv":
463
467
  delimiter = " "
@@ -473,7 +477,10 @@ class ApiClient:
473
477
 
474
478
  return "&".join(["=".join(map(str, item)) for item in new_params])
475
479
 
476
- def files_parameters(self, files: Dict[str, Union[str, bytes]]):
480
+ def files_parameters(
481
+ self,
482
+ files: Dict[str, Union[str, bytes, List[str], List[bytes], Tuple[str, bytes]]],
483
+ ):
477
484
  """Builds form parameters.
478
485
 
479
486
  :param files: File parameters.
@@ -488,6 +495,12 @@ class ApiClient:
488
495
  elif isinstance(v, bytes):
489
496
  filename = k
490
497
  filedata = v
498
+ elif isinstance(v, tuple):
499
+ filename, filedata = v
500
+ elif isinstance(v, list):
501
+ for file_param in v:
502
+ params.extend(self.files_parameters({k: file_param}))
503
+ continue
491
504
  else:
492
505
  raise ValueError("Unsupported file value")
493
506
  mimetype = mimetypes.guess_type(filename)[0] or "application/octet-stream"
@@ -1,10 +1,5 @@
1
1
  # coding: utf-8
2
2
 
3
- import sys
4
-
5
- import os
6
-
7
-
8
3
  """
9
4
  STACKIT Membership API
10
5
 
@@ -14,7 +9,29 @@ import os
14
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
15
10
 
16
11
  Do not edit the class manually.
17
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
+
14
+ import sys
15
+ from typing import Dict, List, Optional, TypedDict
16
+
17
+ from typing_extensions import NotRequired
18
+
19
+ import os
20
+
21
+
22
+ ServerVariablesT = Dict[str, str]
23
+
24
+
25
+ class HostSettingVariable(TypedDict):
26
+ description: str
27
+ default_value: str
28
+ enum_values: List[str]
29
+
30
+
31
+ class HostSetting(TypedDict):
32
+ url: str
33
+ description: str
34
+ variables: NotRequired[Dict[str, HostSettingVariable]]
18
35
 
19
36
 
20
37
  class HostConfiguration:
@@ -53,7 +70,7 @@ class HostConfiguration:
53
70
  """Ignore operation servers
54
71
  """
55
72
 
56
- def get_host_settings(self):
73
+ def get_host_settings(self) -> List[HostSetting]:
57
74
  """Gets an array of host settings
58
75
 
59
76
  :return: An array of host settings
@@ -71,7 +88,12 @@ class HostConfiguration:
71
88
  }
72
89
  ]
73
90
 
74
- def get_host_from_settings(self, index, variables=None, servers=None):
91
+ def get_host_from_settings(
92
+ self,
93
+ index: Optional[int],
94
+ variables: Optional[ServerVariablesT] = None,
95
+ servers: Optional[List[HostSetting]] = None,
96
+ ) -> str:
75
97
  """Gets host URL based on the index and variables
76
98
  :param index: array index of the host settings
77
99
  :param variables: hash of variable and the corresponding value
@@ -111,7 +133,7 @@ class HostConfiguration:
111
133
  and variables.get(variable_name) is not None
112
134
  ):
113
135
  raise ValueError(
114
- "this API does not support setting a region in the the client configuration, "
136
+ "this API does not support setting a region in the client configuration, "
115
137
  "please check if the region can be specified as a function parameter"
116
138
  )
117
139
  used_value = variables.get(variable_name, variable["default_value"])
@@ -130,12 +152,12 @@ class HostConfiguration:
130
152
  return url
131
153
 
132
154
  @property
133
- def host(self):
155
+ def host(self) -> str:
134
156
  """Return generated host."""
135
157
  return self.get_host_from_settings(self.server_index, variables=self.server_variables)
136
158
 
137
159
  @host.setter
138
- def host(self, value):
160
+ def host(self, value: str) -> None:
139
161
  """Fix base path."""
140
162
  self._base_path = value
141
163
  self.server_index = None
@@ -9,7 +9,7 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from typing import Any, Optional
15
15
 
@@ -151,6 +151,13 @@ class ApiException(OpenApiException):
151
151
  if http_resp.status == 404:
152
152
  raise NotFoundException(http_resp=http_resp, body=body, data=data)
153
153
 
154
+ # Added new conditions for 409 and 422
155
+ if http_resp.status == 409:
156
+ raise ConflictException(http_resp=http_resp, body=body, data=data)
157
+
158
+ if http_resp.status == 422:
159
+ raise UnprocessableEntityException(http_resp=http_resp, body=body, data=data)
160
+
154
161
  if 500 <= http_resp.status <= 599:
155
162
  raise ServiceException(http_resp=http_resp, body=body, data=data)
156
163
  raise ApiException(http_resp=http_resp, body=body, data=data)
@@ -187,6 +194,18 @@ class ServiceException(ApiException):
187
194
  pass
188
195
 
189
196
 
197
+ class ConflictException(ApiException):
198
+ """Exception for HTTP 409 Conflict."""
199
+
200
+ pass
201
+
202
+
203
+ class UnprocessableEntityException(ApiException):
204
+ """Exception for HTTP 422 Unprocessable Entity."""
205
+
206
+ pass
207
+
208
+
190
209
  def render_path(path_to_item):
191
210
  """Returns a string representation of a path"""
192
211
  result = ""
@@ -10,7 +10,7 @@
10
10
  Generated by OpenAPI Generator (https://openapi-generator.tech)
11
11
 
12
12
  Do not edit the class manually.
13
- """ # noqa: E501 docstring might be too long
13
+ """ # noqa: E501
14
14
 
15
15
 
16
16
  # import models into model package
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -27,7 +27,7 @@ from stackit.authorization.models.member import Member
27
27
  class AddMembersPayload(BaseModel):
28
28
  """
29
29
  AddMembersPayload
30
- """
30
+ """ # noqa: E501
31
31
 
32
32
  members: List[Member]
33
33
  resource_type: Annotated[str, Field(strict=True)] = Field(alias="resourceType")
@@ -9,7 +9,7 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
@@ -25,7 +25,7 @@ from typing_extensions import Self
25
25
  class ErrorResponse(BaseModel):
26
26
  """
27
27
  ErrorResponse
28
- """
28
+ """ # noqa: E501
29
29
 
30
30
  error: StrictStr
31
31
  message: StrictStr
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -25,7 +25,7 @@ from typing_extensions import Annotated, Self
25
25
  class ExistingPermission(BaseModel):
26
26
  """
27
27
  ExistingPermission
28
- """
28
+ """ # noqa: E501
29
29
 
30
30
  description: Annotated[str, Field(strict=True, max_length=255)]
31
31
  name: Annotated[str, Field(strict=True, max_length=255)]
@@ -34,8 +34,8 @@ class ExistingPermission(BaseModel):
34
34
  @field_validator("name")
35
35
  def name_validate_regular_expression(cls, value):
36
36
  """Validates the regular expression"""
37
- if not re.match(r"^[a-z](?:-?\.?[a-z]){1,63}$", value):
38
- raise ValueError(r"must validate the regular expression /^[a-z](?:-?\.?[a-z]){1,63}$/")
37
+ if not re.match(r"^[a-z](?:[-.]?[a-z]){1,63}$", value):
38
+ raise ValueError(r"must validate the regular expression /^[a-z](?:[-.]?[a-z]){1,63}$/")
39
39
  return value
40
40
 
41
41
  model_config = ConfigDict(
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -27,7 +27,7 @@ from stackit.authorization.models.member import Member
27
27
  class ListMembersResponse(BaseModel):
28
28
  """
29
29
  ListMembersResponse
30
- """
30
+ """ # noqa: E501
31
31
 
32
32
  members: List[Member]
33
33
  resource_id: Annotated[str, Field(strict=True)] = Field(alias="resourceId")
@@ -9,7 +9,7 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
@@ -26,7 +26,7 @@ from stackit.authorization.models.permission import Permission
26
26
  class ListPermissionsResponse(BaseModel):
27
27
  """
28
28
  ListPermissionsResponse
29
- """
29
+ """ # noqa: E501
30
30
 
31
31
  permissions: List[Permission]
32
32
  __properties: ClassVar[List[str]] = ["permissions"]
@@ -9,7 +9,7 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
@@ -26,7 +26,7 @@ from stackit.authorization.models.user_membership import UserMembership
26
26
  class ListUserMembershipsResponse(BaseModel):
27
27
  """
28
28
  ListUserMembershipsResponse
29
- """
29
+ """ # noqa: E501
30
30
 
31
31
  items: List[UserMembership]
32
32
  __properties: ClassVar[List[str]] = ["items"]
@@ -9,7 +9,7 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
@@ -26,7 +26,7 @@ from stackit.authorization.models.user_permission import UserPermission
26
26
  class ListUserPermissionsResponse(BaseModel):
27
27
  """
28
28
  ListUserPermissionsResponse
29
- """
29
+ """ # noqa: E501
30
30
 
31
31
  items: List[UserPermission]
32
32
  __properties: ClassVar[List[str]] = ["items"]
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -25,7 +25,7 @@ from typing_extensions import Annotated, Self
25
25
  class Member(BaseModel):
26
26
  """
27
27
  Member
28
- """
28
+ """ # noqa: E501
29
29
 
30
30
  role: Annotated[str, Field(strict=True)]
31
31
  subject: Annotated[str, Field(min_length=1, strict=True, max_length=255)]
@@ -34,8 +34,8 @@ class Member(BaseModel):
34
34
  @field_validator("role")
35
35
  def role_validate_regular_expression(cls, value):
36
36
  """Validates the regular expression"""
37
- if not re.match(r"^[a-z](?:-?\.?[a-z]){1,63}$", value):
38
- raise ValueError(r"must validate the regular expression /^[a-z](?:-?\.?[a-z]){1,63}$/")
37
+ if not re.match(r"^[a-z](?:[-.]?[a-z]){1,63}$", value):
38
+ raise ValueError(r"must validate the regular expression /^[a-z](?:[-.]?[a-z]){1,63}$/")
39
39
  return value
40
40
 
41
41
  model_config = ConfigDict(
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -28,7 +28,7 @@ from stackit.authorization.models.zookie import Zookie
28
28
  class MembersResponse(BaseModel):
29
29
  """
30
30
  MembersResponse
31
- """
31
+ """ # noqa: E501
32
32
 
33
33
  members: List[Member]
34
34
  resource_id: Annotated[str, Field(strict=True)] = Field(alias="resourceId")
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -25,7 +25,7 @@ from typing_extensions import Annotated, Self
25
25
  class Permission(BaseModel):
26
26
  """
27
27
  Permission
28
- """
28
+ """ # noqa: E501
29
29
 
30
30
  description: Annotated[str, Field(min_length=1, strict=True, max_length=255)]
31
31
  name: Annotated[str, Field(strict=True, max_length=255)]
@@ -34,8 +34,8 @@ class Permission(BaseModel):
34
34
  @field_validator("name")
35
35
  def name_validate_regular_expression(cls, value):
36
36
  """Validates the regular expression"""
37
- if not re.match(r"^[a-z](?:-?\.?[a-z]){1,63}$", value):
38
- raise ValueError(r"must validate the regular expression /^[a-z](?:-?\.?[a-z]){1,63}$/")
37
+ if not re.match(r"^[a-z](?:[-.]?[a-z]){1,63}$", value):
38
+ raise ValueError(r"must validate the regular expression /^[a-z](?:[-.]?[a-z]){1,63}$/")
39
39
  return value
40
40
 
41
41
  model_config = ConfigDict(
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, StrictBool, field_validator
@@ -27,7 +27,7 @@ from stackit.authorization.models.member import Member
27
27
  class RemoveMembersPayload(BaseModel):
28
28
  """
29
29
  RemoveMembersPayload
30
- """
30
+ """ # noqa: E501
31
31
 
32
32
  force_remove: Optional[StrictBool] = Field(default=None, alias="forceRemove")
33
33
  members: List[Member]
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -27,7 +27,7 @@ from stackit.authorization.models.permission import Permission
27
27
  class Role(BaseModel):
28
28
  """
29
29
  Role
30
- """
30
+ """ # noqa: E501
31
31
 
32
32
  description: Annotated[str, Field(strict=True, max_length=255)]
33
33
  id: Optional[Annotated[str, Field(strict=True)]] = None
@@ -48,8 +48,8 @@ class Role(BaseModel):
48
48
  @field_validator("name")
49
49
  def name_validate_regular_expression(cls, value):
50
50
  """Validates the regular expression"""
51
- if not re.match(r"^[a-z](?:-?\.?[a-z]){1,63}$", value):
52
- raise ValueError(r"must validate the regular expression /^[a-z](?:-?\.?[a-z]){1,63}$/")
51
+ if not re.match(r"^[a-z](?:[-.]?[a-z]){1,63}$", value):
52
+ raise ValueError(r"must validate the regular expression /^[a-z](?:[-.]?[a-z]){1,63}$/")
53
53
  return value
54
54
 
55
55
  model_config = ConfigDict(
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -27,7 +27,7 @@ from stackit.authorization.models.role import Role
27
27
  class RolesResponse(BaseModel):
28
28
  """
29
29
  RolesResponse
30
- """
30
+ """ # noqa: E501
31
31
 
32
32
  resource_id: Annotated[str, Field(strict=True)] = Field(alias="resourceId")
33
33
  resource_type: Annotated[str, Field(strict=True)] = Field(alias="resourceType")
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -25,7 +25,7 @@ from typing_extensions import Annotated, Self
25
25
  class UserMembership(BaseModel):
26
26
  """
27
27
  UserMembership
28
- """
28
+ """ # noqa: E501
29
29
 
30
30
  resource_id: Annotated[str, Field(strict=True)] = Field(alias="resourceId")
31
31
  resource_type: Annotated[str, Field(strict=True)] = Field(alias="resourceType")
@@ -50,8 +50,8 @@ class UserMembership(BaseModel):
50
50
  @field_validator("role")
51
51
  def role_validate_regular_expression(cls, value):
52
52
  """Validates the regular expression"""
53
- if not re.match(r"^[a-z](?:-?\.?[a-z]){1,63}$", value):
54
- raise ValueError(r"must validate the regular expression /^[a-z](?:-?\.?[a-z]){1,63}$/")
53
+ if not re.match(r"^[a-z](?:[-.]?[a-z]){1,63}$", value):
54
+ raise ValueError(r"must validate the regular expression /^[a-z](?:[-.]?[a-z]){1,63}$/")
55
55
  return value
56
56
 
57
57
  model_config = ConfigDict(
@@ -9,13 +9,13 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
- import re
18
+ import re # noqa: F401
19
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -27,7 +27,7 @@ from stackit.authorization.models.existing_permission import ExistingPermission
27
27
  class UserPermission(BaseModel):
28
28
  """
29
29
  UserPermission
30
- """
30
+ """ # noqa: E501
31
31
 
32
32
  permissions: List[ExistingPermission]
33
33
  resource_id: Annotated[str, Field(strict=True)] = Field(alias="resourceId")
@@ -9,7 +9,7 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  from __future__ import annotations
15
15
 
@@ -24,7 +24,7 @@ from typing_extensions import Self
24
24
  class Zookie(BaseModel):
25
25
  """
26
26
  Zookie
27
- """
27
+ """ # noqa: E501
28
28
 
29
29
  zookie: Optional[StrictStr] = None
30
30
  __properties: ClassVar[List[str]] = ["zookie"]
@@ -9,7 +9,7 @@
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
12
- """ # noqa: E501 docstring might be too long
12
+ """ # noqa: E501
13
13
 
14
14
  import io
15
15
  import json
@@ -124,7 +124,7 @@ class RESTClientObject:
124
124
  data=body,
125
125
  headers=headers,
126
126
  )
127
- elif headers["Content-Type"] == "text/plain" and isinstance(body, bool):
127
+ elif headers["Content-Type"].startswith("text/") and isinstance(body, bool):
128
128
  request_body = "true" if body else "false"
129
129
  r = self.session.request(method, url, data=request_body, headers=headers)
130
130
  else:
@@ -1,57 +0,0 @@
1
- # coding: utf-8
2
-
3
- # flake8: noqa
4
-
5
- """
6
- STACKIT Membership API
7
-
8
- The Membership API is used to manage memberships, roles and permissions of STACKIT resources, like projects, folders, organizations and other resources.
9
-
10
- The version of the OpenAPI document: 2.0
11
- Generated by OpenAPI Generator (https://openapi-generator.tech)
12
-
13
- Do not edit the class manually.
14
- """ # noqa: E501 docstring might be too long
15
-
16
-
17
- __version__ = "1.0.0"
18
-
19
- # import apis into sdk package
20
- from stackit.authorization.api.default_api import DefaultApi
21
- from stackit.authorization.api_client import ApiClient
22
-
23
- # import ApiClient
24
- from stackit.authorization.api_response import ApiResponse
25
- from stackit.authorization.configuration import HostConfiguration
26
- from stackit.authorization.exceptions import (
27
- ApiAttributeError,
28
- ApiException,
29
- ApiKeyError,
30
- ApiTypeError,
31
- ApiValueError,
32
- OpenApiException,
33
- )
34
-
35
- # import models into sdk package
36
- from stackit.authorization.models.add_members_payload import AddMembersPayload
37
- from stackit.authorization.models.error_response import ErrorResponse
38
- from stackit.authorization.models.existing_permission import ExistingPermission
39
- from stackit.authorization.models.list_members_response import ListMembersResponse
40
- from stackit.authorization.models.list_permissions_response import (
41
- ListPermissionsResponse,
42
- )
43
- from stackit.authorization.models.list_user_memberships_response import (
44
- ListUserMembershipsResponse,
45
- )
46
- from stackit.authorization.models.list_user_permissions_response import (
47
- ListUserPermissionsResponse,
48
- )
49
- from stackit.authorization.models.member import Member
50
- from stackit.authorization.models.members_response import MembersResponse
51
- from stackit.authorization.models.permission import Permission
52
- from stackit.authorization.models.remove_members_payload import RemoveMembersPayload
53
- from stackit.authorization.models.role import Role
54
- from stackit.authorization.models.roles_response import RolesResponse
55
- from stackit.authorization.models.user_membership import UserMembership
56
- from stackit.authorization.models.user_permission import UserPermission
57
- from stackit.authorization.models.zookie import Zookie