unbind3pidFromAccount method

Future<IdServerUnbindResult> unbind3pidFromAccount(
  1. String address,
  2. ThirdPartyIdentifierMedium medium, {
  3. String? idServer,
})

Removes a user's third-party identifier from the provided identity server without removing it from the homeserver.

Unlike other endpoints, this endpoint does not take an id_access_token parameter because the homeserver is expected to sign the request to the identity server instead.

address The third-party address being removed.

idServer The identity server to unbind from. If not provided, the homeserver MUST use the id_server the identifier was added through. If the homeserver does not know the original id_server, it MUST return a id_server_unbind_result of no-support.

medium The medium of the third-party identifier being removed.

returns id_server_unbind_result: An indicator as to whether or not the identity server was able to unbind the 3PID. success indicates that the identity server has unbound the identifier whereas no-support indicates that the identity server refuses to support the request or the homeserver was not able to determine an identity server to unbind from.

Implementation

Future<IdServerUnbindResult> unbind3pidFromAccount(
  String address,
  ThirdPartyIdentifierMedium medium, {
  String? idServer,
}) async {
  final requestUri = Uri(path: '_matrix/client/v3/account/3pid/unbind');
  final request = Request('POST', baseUri!.resolveUri(requestUri));
  request.headers['authorization'] = 'Bearer ${bearerToken!}';
  request.headers['content-type'] = 'application/json';
  request.bodyBytes = utf8.encode(
    jsonEncode({
      'address': address,
      if (idServer != null) 'id_server': idServer,
      'medium': medium.name,
    }),
  );
  final response = await httpClient.send(request);
  final responseBody = await response.stream.toBytes();
  if (response.statusCode != 200) unexpectedResponse(response, responseBody);
  final responseString = utf8.decode(responseBody);
  final json = jsonDecode(responseString);
  return IdServerUnbindResult.values
      .fromString(json['id_server_unbind_result'] as String)!;
}