diff --git a/scaleway-async/scaleway_async/iam/v1alpha1/__init__.py b/scaleway-async/scaleway_async/iam/v1alpha1/__init__.py index a2f0c4b19..10a9a31b5 100644 --- a/scaleway-async/scaleway_async/iam/v1alpha1/__init__.py +++ b/scaleway-async/scaleway_async/iam/v1alpha1/__init__.py @@ -68,6 +68,9 @@ from .types import GetUserConnectionsRequest from .types import GetUserConnectionsResponse from .types import GetUserRequest +from .types import InitiateUserConnectionRequest +from .types import InitiateUserConnectionResponse +from .types import JoinUserConnectionRequest from .types import ListAPIKeysRequest from .types import ListAPIKeysResponse from .types import ListApplicationsRequest @@ -97,6 +100,7 @@ from .types import MigrateOrganizationGuestsRequest from .types import OrganizationSecuritySettings from .types import RemoveGroupMemberRequest +from .types import RemoveUserConnectionRequest from .types import SetGroupMembersRequest from .types import SetRulesRequest from .types import SetRulesResponse @@ -183,6 +187,9 @@ "GetUserConnectionsRequest", "GetUserConnectionsResponse", "GetUserRequest", + "InitiateUserConnectionRequest", + "InitiateUserConnectionResponse", + "JoinUserConnectionRequest", "ListAPIKeysRequest", "ListAPIKeysResponse", "ListApplicationsRequest", @@ -212,6 +219,7 @@ "MigrateOrganizationGuestsRequest", "OrganizationSecuritySettings", "RemoveGroupMemberRequest", + "RemoveUserConnectionRequest", "SetGroupMembersRequest", "SetRulesRequest", "SetRulesResponse", diff --git a/scaleway-async/scaleway_async/iam/v1alpha1/api.py b/scaleway-async/scaleway_async/iam/v1alpha1/api.py index 2c2790862..905830920 100644 --- a/scaleway-async/scaleway_async/iam/v1alpha1/api.py +++ b/scaleway-async/scaleway_async/iam/v1alpha1/api.py @@ -42,7 +42,9 @@ EncodedJWT, GetUserConnectionsResponse, Group, + InitiateUserConnectionResponse, JWT, + JoinUserConnectionRequest, ListAPIKeysResponse, ListApplicationsResponse, ListGracePeriodsResponse, @@ -62,6 +64,7 @@ Policy, Quotum, RemoveGroupMemberRequest, + RemoveUserConnectionRequest, Rule, RuleSpecs, SSHKey, @@ -93,6 +96,7 @@ unmarshal_User, unmarshal_EncodedJWT, unmarshal_GetUserConnectionsResponse, + unmarshal_InitiateUserConnectionResponse, unmarshal_ListAPIKeysResponse, unmarshal_ListApplicationsResponse, unmarshal_ListGracePeriodsResponse, @@ -118,7 +122,9 @@ marshal_CreatePolicyRequest, marshal_CreateSSHKeyRequest, marshal_CreateUserRequest, + marshal_JoinUserConnectionRequest, marshal_RemoveGroupMemberRequest, + marshal_RemoveUserConnectionRequest, marshal_SetGroupMembersRequest, marshal_SetRulesRequest, marshal_UpdateAPIKeyRequest, @@ -898,6 +904,104 @@ async def get_user_connections( self._throw_on_error(res) return unmarshal_GetUserConnectionsResponse(res.json()) + async def initiate_user_connection( + self, + *, + user_id: str, + ) -> InitiateUserConnectionResponse: + """ + :param user_id: ID of the user that will be added to your connection. + :return: :class:`InitiateUserConnectionResponse ` + + Usage: + :: + + result = await api.initiate_user_connection( + user_id="example", + ) + """ + + param_user_id = validate_path_param("user_id", user_id) + + res = self._request( + "POST", + f"/iam/v1alpha1/users/{param_user_id}/initiate-connection", + body={}, + ) + + self._throw_on_error(res) + return unmarshal_InitiateUserConnectionResponse(res.json()) + + async def join_user_connection( + self, + *, + user_id: str, + token: str, + ) -> None: + """ + :param user_id: User ID. + :param token: A token returned by InitiateUserConnection. + + Usage: + :: + + result = await api.join_user_connection( + user_id="example", + token="example", + ) + """ + + param_user_id = validate_path_param("user_id", user_id) + + res = self._request( + "POST", + f"/iam/v1alpha1/users/{param_user_id}/join-connection", + body=marshal_JoinUserConnectionRequest( + JoinUserConnectionRequest( + user_id=user_id, + token=token, + ), + self.client, + ), + ) + + self._throw_on_error(res) + + async def remove_user_connection( + self, + *, + user_id: str, + target_user_id: str, + ) -> None: + """ + :param user_id: ID of the user you want to manage the connection for. + :param target_user_id: ID of the user you want to remove from your connection. + + Usage: + :: + + result = await api.remove_user_connection( + user_id="example", + target_user_id="example", + ) + """ + + param_user_id = validate_path_param("user_id", user_id) + + res = self._request( + "POST", + f"/iam/v1alpha1/users/{param_user_id}/remove-connection", + body=marshal_RemoveUserConnectionRequest( + RemoveUserConnectionRequest( + user_id=user_id, + target_user_id=target_user_id, + ), + self.client, + ), + ) + + self._throw_on_error(res) + async def list_applications( self, *, diff --git a/scaleway-async/scaleway_async/iam/v1alpha1/marshalling.py b/scaleway-async/scaleway_async/iam/v1alpha1/marshalling.py index 3bdb9e469..2e818d91a 100644 --- a/scaleway-async/scaleway_async/iam/v1alpha1/marshalling.py +++ b/scaleway-async/scaleway_async/iam/v1alpha1/marshalling.py @@ -25,6 +25,7 @@ ConnectionConnectedUser, Connection, GetUserConnectionsResponse, + InitiateUserConnectionResponse, ListAPIKeysResponse, ListApplicationsResponse, GracePeriod, @@ -55,7 +56,9 @@ CreateSSHKeyRequest, CreateUserRequestMember, CreateUserRequest, + JoinUserConnectionRequest, RemoveGroupMemberRequest, + RemoveUserConnectionRequest, SetGroupMembersRequest, SetRulesRequest, UpdateAPIKeyRequest, @@ -808,6 +811,23 @@ def unmarshal_GetUserConnectionsResponse(data: Any) -> GetUserConnectionsRespons return GetUserConnectionsResponse(**args) +def unmarshal_InitiateUserConnectionResponse( + data: Any, +) -> InitiateUserConnectionResponse: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'InitiateUserConnectionResponse' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("token", None) + if field is not None: + args["token"] = field + + return InitiateUserConnectionResponse(**args) + + def unmarshal_ListAPIKeysResponse(data: Any) -> ListAPIKeysResponse: if not isinstance(data, dict): raise TypeError( @@ -1492,6 +1512,18 @@ def marshal_CreateUserRequest( return output +def marshal_JoinUserConnectionRequest( + request: JoinUserConnectionRequest, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.token is not None: + output["token"] = request.token + + return output + + def marshal_RemoveGroupMemberRequest( request: RemoveGroupMemberRequest, defaults: ProfileDefaults, @@ -1509,6 +1541,18 @@ def marshal_RemoveGroupMemberRequest( return output +def marshal_RemoveUserConnectionRequest( + request: RemoveUserConnectionRequest, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.target_user_id is not None: + output["target_user_id"] = request.target_user_id + + return output + + def marshal_SetGroupMembersRequest( request: SetGroupMembersRequest, defaults: ProfileDefaults, diff --git a/scaleway-async/scaleway_async/iam/v1alpha1/types.py b/scaleway-async/scaleway_async/iam/v1alpha1/types.py index a3cd107dd..eb811d41e 100644 --- a/scaleway-async/scaleway_async/iam/v1alpha1/types.py +++ b/scaleway-async/scaleway_async/iam/v1alpha1/types.py @@ -1298,6 +1298,35 @@ class GetUserRequest: """ +@dataclass +class InitiateUserConnectionRequest: + user_id: str + """ + ID of the user that will be added to your connection. + """ + + +@dataclass +class InitiateUserConnectionResponse: + token: str + """ + Token to be used in JoinUserConnection. + """ + + +@dataclass +class JoinUserConnectionRequest: + user_id: str + """ + User ID. + """ + + token: str + """ + A token returned by InitiateUserConnection. + """ + + @dataclass class ListAPIKeysRequest: order_by: Optional[ListAPIKeysRequestOrderBy] @@ -1944,6 +1973,19 @@ class RemoveGroupMemberRequest: application_id: Optional[str] +@dataclass +class RemoveUserConnectionRequest: + user_id: str + """ + ID of the user you want to manage the connection for. + """ + + target_user_id: str + """ + ID of the user you want to remove from your connection. + """ + + @dataclass class SetGroupMembersRequest: group_id: str diff --git a/scaleway/scaleway/iam/v1alpha1/__init__.py b/scaleway/scaleway/iam/v1alpha1/__init__.py index a2f0c4b19..10a9a31b5 100644 --- a/scaleway/scaleway/iam/v1alpha1/__init__.py +++ b/scaleway/scaleway/iam/v1alpha1/__init__.py @@ -68,6 +68,9 @@ from .types import GetUserConnectionsRequest from .types import GetUserConnectionsResponse from .types import GetUserRequest +from .types import InitiateUserConnectionRequest +from .types import InitiateUserConnectionResponse +from .types import JoinUserConnectionRequest from .types import ListAPIKeysRequest from .types import ListAPIKeysResponse from .types import ListApplicationsRequest @@ -97,6 +100,7 @@ from .types import MigrateOrganizationGuestsRequest from .types import OrganizationSecuritySettings from .types import RemoveGroupMemberRequest +from .types import RemoveUserConnectionRequest from .types import SetGroupMembersRequest from .types import SetRulesRequest from .types import SetRulesResponse @@ -183,6 +187,9 @@ "GetUserConnectionsRequest", "GetUserConnectionsResponse", "GetUserRequest", + "InitiateUserConnectionRequest", + "InitiateUserConnectionResponse", + "JoinUserConnectionRequest", "ListAPIKeysRequest", "ListAPIKeysResponse", "ListApplicationsRequest", @@ -212,6 +219,7 @@ "MigrateOrganizationGuestsRequest", "OrganizationSecuritySettings", "RemoveGroupMemberRequest", + "RemoveUserConnectionRequest", "SetGroupMembersRequest", "SetRulesRequest", "SetRulesResponse", diff --git a/scaleway/scaleway/iam/v1alpha1/api.py b/scaleway/scaleway/iam/v1alpha1/api.py index 8a88b1dd1..8ef6231b6 100644 --- a/scaleway/scaleway/iam/v1alpha1/api.py +++ b/scaleway/scaleway/iam/v1alpha1/api.py @@ -42,7 +42,9 @@ EncodedJWT, GetUserConnectionsResponse, Group, + InitiateUserConnectionResponse, JWT, + JoinUserConnectionRequest, ListAPIKeysResponse, ListApplicationsResponse, ListGracePeriodsResponse, @@ -62,6 +64,7 @@ Policy, Quotum, RemoveGroupMemberRequest, + RemoveUserConnectionRequest, Rule, RuleSpecs, SSHKey, @@ -93,6 +96,7 @@ unmarshal_User, unmarshal_EncodedJWT, unmarshal_GetUserConnectionsResponse, + unmarshal_InitiateUserConnectionResponse, unmarshal_ListAPIKeysResponse, unmarshal_ListApplicationsResponse, unmarshal_ListGracePeriodsResponse, @@ -118,7 +122,9 @@ marshal_CreatePolicyRequest, marshal_CreateSSHKeyRequest, marshal_CreateUserRequest, + marshal_JoinUserConnectionRequest, marshal_RemoveGroupMemberRequest, + marshal_RemoveUserConnectionRequest, marshal_SetGroupMembersRequest, marshal_SetRulesRequest, marshal_UpdateAPIKeyRequest, @@ -898,6 +904,104 @@ def get_user_connections( self._throw_on_error(res) return unmarshal_GetUserConnectionsResponse(res.json()) + def initiate_user_connection( + self, + *, + user_id: str, + ) -> InitiateUserConnectionResponse: + """ + :param user_id: ID of the user that will be added to your connection. + :return: :class:`InitiateUserConnectionResponse ` + + Usage: + :: + + result = api.initiate_user_connection( + user_id="example", + ) + """ + + param_user_id = validate_path_param("user_id", user_id) + + res = self._request( + "POST", + f"/iam/v1alpha1/users/{param_user_id}/initiate-connection", + body={}, + ) + + self._throw_on_error(res) + return unmarshal_InitiateUserConnectionResponse(res.json()) + + def join_user_connection( + self, + *, + user_id: str, + token: str, + ) -> None: + """ + :param user_id: User ID. + :param token: A token returned by InitiateUserConnection. + + Usage: + :: + + result = api.join_user_connection( + user_id="example", + token="example", + ) + """ + + param_user_id = validate_path_param("user_id", user_id) + + res = self._request( + "POST", + f"/iam/v1alpha1/users/{param_user_id}/join-connection", + body=marshal_JoinUserConnectionRequest( + JoinUserConnectionRequest( + user_id=user_id, + token=token, + ), + self.client, + ), + ) + + self._throw_on_error(res) + + def remove_user_connection( + self, + *, + user_id: str, + target_user_id: str, + ) -> None: + """ + :param user_id: ID of the user you want to manage the connection for. + :param target_user_id: ID of the user you want to remove from your connection. + + Usage: + :: + + result = api.remove_user_connection( + user_id="example", + target_user_id="example", + ) + """ + + param_user_id = validate_path_param("user_id", user_id) + + res = self._request( + "POST", + f"/iam/v1alpha1/users/{param_user_id}/remove-connection", + body=marshal_RemoveUserConnectionRequest( + RemoveUserConnectionRequest( + user_id=user_id, + target_user_id=target_user_id, + ), + self.client, + ), + ) + + self._throw_on_error(res) + def list_applications( self, *, diff --git a/scaleway/scaleway/iam/v1alpha1/marshalling.py b/scaleway/scaleway/iam/v1alpha1/marshalling.py index 3bdb9e469..2e818d91a 100644 --- a/scaleway/scaleway/iam/v1alpha1/marshalling.py +++ b/scaleway/scaleway/iam/v1alpha1/marshalling.py @@ -25,6 +25,7 @@ ConnectionConnectedUser, Connection, GetUserConnectionsResponse, + InitiateUserConnectionResponse, ListAPIKeysResponse, ListApplicationsResponse, GracePeriod, @@ -55,7 +56,9 @@ CreateSSHKeyRequest, CreateUserRequestMember, CreateUserRequest, + JoinUserConnectionRequest, RemoveGroupMemberRequest, + RemoveUserConnectionRequest, SetGroupMembersRequest, SetRulesRequest, UpdateAPIKeyRequest, @@ -808,6 +811,23 @@ def unmarshal_GetUserConnectionsResponse(data: Any) -> GetUserConnectionsRespons return GetUserConnectionsResponse(**args) +def unmarshal_InitiateUserConnectionResponse( + data: Any, +) -> InitiateUserConnectionResponse: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'InitiateUserConnectionResponse' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("token", None) + if field is not None: + args["token"] = field + + return InitiateUserConnectionResponse(**args) + + def unmarshal_ListAPIKeysResponse(data: Any) -> ListAPIKeysResponse: if not isinstance(data, dict): raise TypeError( @@ -1492,6 +1512,18 @@ def marshal_CreateUserRequest( return output +def marshal_JoinUserConnectionRequest( + request: JoinUserConnectionRequest, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.token is not None: + output["token"] = request.token + + return output + + def marshal_RemoveGroupMemberRequest( request: RemoveGroupMemberRequest, defaults: ProfileDefaults, @@ -1509,6 +1541,18 @@ def marshal_RemoveGroupMemberRequest( return output +def marshal_RemoveUserConnectionRequest( + request: RemoveUserConnectionRequest, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.target_user_id is not None: + output["target_user_id"] = request.target_user_id + + return output + + def marshal_SetGroupMembersRequest( request: SetGroupMembersRequest, defaults: ProfileDefaults, diff --git a/scaleway/scaleway/iam/v1alpha1/types.py b/scaleway/scaleway/iam/v1alpha1/types.py index a3cd107dd..eb811d41e 100644 --- a/scaleway/scaleway/iam/v1alpha1/types.py +++ b/scaleway/scaleway/iam/v1alpha1/types.py @@ -1298,6 +1298,35 @@ class GetUserRequest: """ +@dataclass +class InitiateUserConnectionRequest: + user_id: str + """ + ID of the user that will be added to your connection. + """ + + +@dataclass +class InitiateUserConnectionResponse: + token: str + """ + Token to be used in JoinUserConnection. + """ + + +@dataclass +class JoinUserConnectionRequest: + user_id: str + """ + User ID. + """ + + token: str + """ + A token returned by InitiateUserConnection. + """ + + @dataclass class ListAPIKeysRequest: order_by: Optional[ListAPIKeysRequestOrderBy] @@ -1944,6 +1973,19 @@ class RemoveGroupMemberRequest: application_id: Optional[str] +@dataclass +class RemoveUserConnectionRequest: + user_id: str + """ + ID of the user you want to manage the connection for. + """ + + target_user_id: str + """ + ID of the user you want to remove from your connection. + """ + + @dataclass class SetGroupMembersRequest: group_id: str