Skip to content

Commit ba08c7a

Browse files
authored
feat(iam/v1alpha1): add user connection routes (#1012)
1 parent a8064cb commit ba08c7a

File tree

8 files changed

+396
-0
lines changed

8 files changed

+396
-0
lines changed

scaleway-async/scaleway_async/iam/v1alpha1/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@
6868
from .types import GetUserConnectionsRequest
6969
from .types import GetUserConnectionsResponse
7070
from .types import GetUserRequest
71+
from .types import InitiateUserConnectionRequest
72+
from .types import InitiateUserConnectionResponse
73+
from .types import JoinUserConnectionRequest
7174
from .types import ListAPIKeysRequest
7275
from .types import ListAPIKeysResponse
7376
from .types import ListApplicationsRequest
@@ -97,6 +100,7 @@
97100
from .types import MigrateOrganizationGuestsRequest
98101
from .types import OrganizationSecuritySettings
99102
from .types import RemoveGroupMemberRequest
103+
from .types import RemoveUserConnectionRequest
100104
from .types import SetGroupMembersRequest
101105
from .types import SetRulesRequest
102106
from .types import SetRulesResponse
@@ -183,6 +187,9 @@
183187
"GetUserConnectionsRequest",
184188
"GetUserConnectionsResponse",
185189
"GetUserRequest",
190+
"InitiateUserConnectionRequest",
191+
"InitiateUserConnectionResponse",
192+
"JoinUserConnectionRequest",
186193
"ListAPIKeysRequest",
187194
"ListAPIKeysResponse",
188195
"ListApplicationsRequest",
@@ -212,6 +219,7 @@
212219
"MigrateOrganizationGuestsRequest",
213220
"OrganizationSecuritySettings",
214221
"RemoveGroupMemberRequest",
222+
"RemoveUserConnectionRequest",
215223
"SetGroupMembersRequest",
216224
"SetRulesRequest",
217225
"SetRulesResponse",

scaleway-async/scaleway_async/iam/v1alpha1/api.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@
4242
EncodedJWT,
4343
GetUserConnectionsResponse,
4444
Group,
45+
InitiateUserConnectionResponse,
4546
JWT,
47+
JoinUserConnectionRequest,
4648
ListAPIKeysResponse,
4749
ListApplicationsResponse,
4850
ListGracePeriodsResponse,
@@ -62,6 +64,7 @@
6264
Policy,
6365
Quotum,
6466
RemoveGroupMemberRequest,
67+
RemoveUserConnectionRequest,
6568
Rule,
6669
RuleSpecs,
6770
SSHKey,
@@ -93,6 +96,7 @@
9396
unmarshal_User,
9497
unmarshal_EncodedJWT,
9598
unmarshal_GetUserConnectionsResponse,
99+
unmarshal_InitiateUserConnectionResponse,
96100
unmarshal_ListAPIKeysResponse,
97101
unmarshal_ListApplicationsResponse,
98102
unmarshal_ListGracePeriodsResponse,
@@ -118,7 +122,9 @@
118122
marshal_CreatePolicyRequest,
119123
marshal_CreateSSHKeyRequest,
120124
marshal_CreateUserRequest,
125+
marshal_JoinUserConnectionRequest,
121126
marshal_RemoveGroupMemberRequest,
127+
marshal_RemoveUserConnectionRequest,
122128
marshal_SetGroupMembersRequest,
123129
marshal_SetRulesRequest,
124130
marshal_UpdateAPIKeyRequest,
@@ -898,6 +904,104 @@ async def get_user_connections(
898904
self._throw_on_error(res)
899905
return unmarshal_GetUserConnectionsResponse(res.json())
900906

907+
async def initiate_user_connection(
908+
self,
909+
*,
910+
user_id: str,
911+
) -> InitiateUserConnectionResponse:
912+
"""
913+
:param user_id: ID of the user that will be added to your connection.
914+
:return: :class:`InitiateUserConnectionResponse <InitiateUserConnectionResponse>`
915+
916+
Usage:
917+
::
918+
919+
result = await api.initiate_user_connection(
920+
user_id="example",
921+
)
922+
"""
923+
924+
param_user_id = validate_path_param("user_id", user_id)
925+
926+
res = self._request(
927+
"POST",
928+
f"/iam/v1alpha1/users/{param_user_id}/initiate-connection",
929+
body={},
930+
)
931+
932+
self._throw_on_error(res)
933+
return unmarshal_InitiateUserConnectionResponse(res.json())
934+
935+
async def join_user_connection(
936+
self,
937+
*,
938+
user_id: str,
939+
token: str,
940+
) -> None:
941+
"""
942+
:param user_id: User ID.
943+
:param token: A token returned by InitiateUserConnection.
944+
945+
Usage:
946+
::
947+
948+
result = await api.join_user_connection(
949+
user_id="example",
950+
token="example",
951+
)
952+
"""
953+
954+
param_user_id = validate_path_param("user_id", user_id)
955+
956+
res = self._request(
957+
"POST",
958+
f"/iam/v1alpha1/users/{param_user_id}/join-connection",
959+
body=marshal_JoinUserConnectionRequest(
960+
JoinUserConnectionRequest(
961+
user_id=user_id,
962+
token=token,
963+
),
964+
self.client,
965+
),
966+
)
967+
968+
self._throw_on_error(res)
969+
970+
async def remove_user_connection(
971+
self,
972+
*,
973+
user_id: str,
974+
target_user_id: str,
975+
) -> None:
976+
"""
977+
:param user_id: ID of the user you want to manage the connection for.
978+
:param target_user_id: ID of the user you want to remove from your connection.
979+
980+
Usage:
981+
::
982+
983+
result = await api.remove_user_connection(
984+
user_id="example",
985+
target_user_id="example",
986+
)
987+
"""
988+
989+
param_user_id = validate_path_param("user_id", user_id)
990+
991+
res = self._request(
992+
"POST",
993+
f"/iam/v1alpha1/users/{param_user_id}/remove-connection",
994+
body=marshal_RemoveUserConnectionRequest(
995+
RemoveUserConnectionRequest(
996+
user_id=user_id,
997+
target_user_id=target_user_id,
998+
),
999+
self.client,
1000+
),
1001+
)
1002+
1003+
self._throw_on_error(res)
1004+
9011005
async def list_applications(
9021006
self,
9031007
*,

scaleway-async/scaleway_async/iam/v1alpha1/marshalling.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
ConnectionConnectedUser,
2626
Connection,
2727
GetUserConnectionsResponse,
28+
InitiateUserConnectionResponse,
2829
ListAPIKeysResponse,
2930
ListApplicationsResponse,
3031
GracePeriod,
@@ -55,7 +56,9 @@
5556
CreateSSHKeyRequest,
5657
CreateUserRequestMember,
5758
CreateUserRequest,
59+
JoinUserConnectionRequest,
5860
RemoveGroupMemberRequest,
61+
RemoveUserConnectionRequest,
5962
SetGroupMembersRequest,
6063
SetRulesRequest,
6164
UpdateAPIKeyRequest,
@@ -808,6 +811,23 @@ def unmarshal_GetUserConnectionsResponse(data: Any) -> GetUserConnectionsRespons
808811
return GetUserConnectionsResponse(**args)
809812

810813

814+
def unmarshal_InitiateUserConnectionResponse(
815+
data: Any,
816+
) -> InitiateUserConnectionResponse:
817+
if not isinstance(data, dict):
818+
raise TypeError(
819+
"Unmarshalling the type 'InitiateUserConnectionResponse' failed as data isn't a dictionary."
820+
)
821+
822+
args: Dict[str, Any] = {}
823+
824+
field = data.get("token", None)
825+
if field is not None:
826+
args["token"] = field
827+
828+
return InitiateUserConnectionResponse(**args)
829+
830+
811831
def unmarshal_ListAPIKeysResponse(data: Any) -> ListAPIKeysResponse:
812832
if not isinstance(data, dict):
813833
raise TypeError(
@@ -1492,6 +1512,18 @@ def marshal_CreateUserRequest(
14921512
return output
14931513

14941514

1515+
def marshal_JoinUserConnectionRequest(
1516+
request: JoinUserConnectionRequest,
1517+
defaults: ProfileDefaults,
1518+
) -> Dict[str, Any]:
1519+
output: Dict[str, Any] = {}
1520+
1521+
if request.token is not None:
1522+
output["token"] = request.token
1523+
1524+
return output
1525+
1526+
14951527
def marshal_RemoveGroupMemberRequest(
14961528
request: RemoveGroupMemberRequest,
14971529
defaults: ProfileDefaults,
@@ -1509,6 +1541,18 @@ def marshal_RemoveGroupMemberRequest(
15091541
return output
15101542

15111543

1544+
def marshal_RemoveUserConnectionRequest(
1545+
request: RemoveUserConnectionRequest,
1546+
defaults: ProfileDefaults,
1547+
) -> Dict[str, Any]:
1548+
output: Dict[str, Any] = {}
1549+
1550+
if request.target_user_id is not None:
1551+
output["target_user_id"] = request.target_user_id
1552+
1553+
return output
1554+
1555+
15121556
def marshal_SetGroupMembersRequest(
15131557
request: SetGroupMembersRequest,
15141558
defaults: ProfileDefaults,

scaleway-async/scaleway_async/iam/v1alpha1/types.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1298,6 +1298,35 @@ class GetUserRequest:
12981298
"""
12991299

13001300

1301+
@dataclass
1302+
class InitiateUserConnectionRequest:
1303+
user_id: str
1304+
"""
1305+
ID of the user that will be added to your connection.
1306+
"""
1307+
1308+
1309+
@dataclass
1310+
class InitiateUserConnectionResponse:
1311+
token: str
1312+
"""
1313+
Token to be used in JoinUserConnection.
1314+
"""
1315+
1316+
1317+
@dataclass
1318+
class JoinUserConnectionRequest:
1319+
user_id: str
1320+
"""
1321+
User ID.
1322+
"""
1323+
1324+
token: str
1325+
"""
1326+
A token returned by InitiateUserConnection.
1327+
"""
1328+
1329+
13011330
@dataclass
13021331
class ListAPIKeysRequest:
13031332
order_by: Optional[ListAPIKeysRequestOrderBy]
@@ -1944,6 +1973,19 @@ class RemoveGroupMemberRequest:
19441973
application_id: Optional[str]
19451974

19461975

1976+
@dataclass
1977+
class RemoveUserConnectionRequest:
1978+
user_id: str
1979+
"""
1980+
ID of the user you want to manage the connection for.
1981+
"""
1982+
1983+
target_user_id: str
1984+
"""
1985+
ID of the user you want to remove from your connection.
1986+
"""
1987+
1988+
19471989
@dataclass
19481990
class SetGroupMembersRequest:
19491991
group_id: str

scaleway/scaleway/iam/v1alpha1/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@
6868
from .types import GetUserConnectionsRequest
6969
from .types import GetUserConnectionsResponse
7070
from .types import GetUserRequest
71+
from .types import InitiateUserConnectionRequest
72+
from .types import InitiateUserConnectionResponse
73+
from .types import JoinUserConnectionRequest
7174
from .types import ListAPIKeysRequest
7275
from .types import ListAPIKeysResponse
7376
from .types import ListApplicationsRequest
@@ -97,6 +100,7 @@
97100
from .types import MigrateOrganizationGuestsRequest
98101
from .types import OrganizationSecuritySettings
99102
from .types import RemoveGroupMemberRequest
103+
from .types import RemoveUserConnectionRequest
100104
from .types import SetGroupMembersRequest
101105
from .types import SetRulesRequest
102106
from .types import SetRulesResponse
@@ -183,6 +187,9 @@
183187
"GetUserConnectionsRequest",
184188
"GetUserConnectionsResponse",
185189
"GetUserRequest",
190+
"InitiateUserConnectionRequest",
191+
"InitiateUserConnectionResponse",
192+
"JoinUserConnectionRequest",
186193
"ListAPIKeysRequest",
187194
"ListAPIKeysResponse",
188195
"ListApplicationsRequest",
@@ -212,6 +219,7 @@
212219
"MigrateOrganizationGuestsRequest",
213220
"OrganizationSecuritySettings",
214221
"RemoveGroupMemberRequest",
222+
"RemoveUserConnectionRequest",
215223
"SetGroupMembersRequest",
216224
"SetRulesRequest",
217225
"SetRulesResponse",

0 commit comments

Comments
 (0)