Documentation Custom MFA Requests Canceling an MFA Request Cease a previously initiated MFA request using HyperID's cancellation API
There might be cases when the application determines that the previously initiated MFA request is no longer needed and should be canceled.
To cancel an MFA request in HyperID, services should send a POST request to the HyperID API, requiring the 'mfa-client' scope, which must be explicitly granted by the user during the authorization process.
Copy POST /mfa-client/transaction/cancel HTTP/1.1
Host: api.hypersecureid.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImFjZDc0NGMzLWFlZDMtNGQxMC04ODZhLTcyYjU0MGY4NmU5YSJ9.eyJleHAiOjE2Nzk4MjM1NTEsImlhdCI6MTY3OTgxOTk1MSwiYXV0aF90aW1lIjoxNjc5ODE5OTUxLCJqdGkiOiIzM2ZlNzI2Ni1kOTY2LTRlNDgtYjU2My05ZWNhZTdjMWU3NTEiLCJpc3MiOiJodHRwczovL2xvZ2luLmh5cGVyc2VjdXJlaWQuY29tL2F1dGgvcmVhbG1zL0h5cGVySUQiLCJzdWIiOiI5MTZlMGUyZS00NmQ5LTRiODAtODg1Ni1kZDlmZWRiMWI3MjMiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJjbGllbnQtc2VydmljZS1hcHAiLCJzY29wZSI6Im9wZW5pZCBlbWFpbCBrZXlzIGF1dGgiLCJzaWQiOiI5OTVjNzhhZC1lYmFjLTRhYWYtOTdiZC0xOTQ4ZWMxOWQzNzEiLCJ3YWxsZXRfYWRkcmVzcyI6IjB44oCmIiwid2FsbGV0X2NoYWluX2lkIjoiMSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJlbWFpbCI6InVzZXJAZ21haWwuY29tIn0.h9GusuxDPX8VOjPoZHD73XzktOkVtd1qEz6C8AuBybw
Content-Length: 29
{
"transaction_id": 3
}
The authorization header should include a valid and non-expired bearer (access) token.
The transaction_id
should contain the same ID received during starting MFA request to identify the request being canceled.
HyperID will respond with a canceling result:
Copy HTTP/1.1 200 OK
Content-Type: application/json
{
"result": 0
}
The result
field is an integer representation of request result, with various possible values as listed in the table below:
Failure because the service is temporarily unavailable
Failure due to invalid request parameters
Failure due to access denial
Failure due to an expired token
Failure due to an invalid token
Failure due to a transaction with the provided ID is not found
Failure due to a transaction with the provided ID has already been expired
Failure due to a transaction with the provided ID has already been completed
Failure due to a transaction with the provided ID has already been canceled
Here are examples of the 'Cancel MFA Request' implemented:
cURL JavaScript NodeJS Python C#
Copy curl --location 'http://api.hypersecureid.com/mfa-client/transaction/cancel' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhMzQ3MzcyZS1mNjkwLTRiNmMtODQ4Yi0yY2I3NjM0NDdhNTMifQ.eyJleHAiOjE2OTM0MTE3OTEsImlhdCI6MTY5MzQwODE5MSwianRpIjoiODRmOWYwNzEtM2Q2Ni00NzIwLWI1YTQtZTNkZDIxZmY3ZDg2IiwiaXNzIjoiaHR0cHM6Ly9sb2dpbi1zdGFnZS5oeXBlcnNlY3VyZWlkLmNvbS9hdXRoL3JlYWxtcy9IeXBlcklEIiwic3ViIjoiNjRkODQ1NmQtZDc5My00NzVjLWE3YjUtMmM1OTk5ZWY0ZTllIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiYXBpLXRlc3QiLCJzZXNzaW9uX3N0YXRlIjoiZjk3YmU0Y2MtMWNlYS00MmQ3LTlhYjAtODY4MjQ1MGQwNDQ1IiwicmVnaW9uX2lkIjowLCJzY29wZSI6Im1mYS1hdXRoZW50aWNhdG9yIGVtYWlsIG1mYS1jbGllbnQiLCJzaWQiOiJmOTdiZTRjYy0xY2VhLTQyZDctOWFiMC04NjgyNDUwZDA0NDUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZW1haWwiOiJ0ZXN0MTYwLnN0ZWFsdGhAb3V0bG9vay5jb20ifQ.PP3_HUBePmPb9WE3BXq7BzXhoH7pc9gsvIKn0MiFx7E' \
--data '{
"transaction_id": 3
}'
Copy var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhMzQ3MzcyZS1mNjkwLTRiNmMtODQ4Yi0yY2I3NjM0NDdhNTMifQ.eyJleHAiOjE2OTM0MTE3OTEsImlhdCI6MTY5MzQwODE5MSwianRpIjoiODRmOWYwNzEtM2Q2Ni00NzIwLWI1YTQtZTNkZDIxZmY3ZDg2IiwiaXNzIjoiaHR0cHM6Ly9sb2dpbi1zdGFnZS5oeXBlcnNlY3VyZWlkLmNvbS9hdXRoL3JlYWxtcy9IeXBlcklEIiwic3ViIjoiNjRkODQ1NmQtZDc5My00NzVjLWE3YjUtMmM1OTk5ZWY0ZTllIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiYXBpLXRlc3QiLCJzZXNzaW9uX3N0YXRlIjoiZjk3YmU0Y2MtMWNlYS00MmQ3LTlhYjAtODY4MjQ1MGQwNDQ1IiwicmVnaW9uX2lkIjowLCJzY29wZSI6Im1mYS1hdXRoZW50aWNhdG9yIGVtYWlsIG1mYS1jbGllbnQiLCJzaWQiOiJmOTdiZTRjYy0xY2VhLTQyZDctOWFiMC04NjgyNDUwZDA0NDUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZW1haWwiOiJ0ZXN0MTYwLnN0ZWFsdGhAb3V0bG9vay5jb20ifQ.PP3_HUBePmPb9WE3BXq7BzXhoH7pc9gsvIKn0MiFx7E");
var raw = JSON.stringify({
"transaction_id": 3
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("http://api.hypersecureid.com/mfa-client/transaction/cancel", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Copy const axios = require('axios');
let data = JSON.stringify({
"transaction_id": 3
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'http://api.hypersecureid.com/mfa-client/transaction/cancel',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhMzQ3MzcyZS1mNjkwLTRiNmMtODQ4Yi0yY2I3NjM0NDdhNTMifQ.eyJleHAiOjE2OTM0MTE3OTEsImlhdCI6MTY5MzQwODE5MSwianRpIjoiODRmOWYwNzEtM2Q2Ni00NzIwLWI1YTQtZTNkZDIxZmY3ZDg2IiwiaXNzIjoiaHR0cHM6Ly9sb2dpbi1zdGFnZS5oeXBlcnNlY3VyZWlkLmNvbS9hdXRoL3JlYWxtcy9IeXBlcklEIiwic3ViIjoiNjRkODQ1NmQtZDc5My00NzVjLWE3YjUtMmM1OTk5ZWY0ZTllIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiYXBpLXRlc3QiLCJzZXNzaW9uX3N0YXRlIjoiZjk3YmU0Y2MtMWNlYS00MmQ3LTlhYjAtODY4MjQ1MGQwNDQ1IiwicmVnaW9uX2lkIjowLCJzY29wZSI6Im1mYS1hdXRoZW50aWNhdG9yIGVtYWlsIG1mYS1jbGllbnQiLCJzaWQiOiJmOTdiZTRjYy0xY2VhLTQyZDctOWFiMC04NjgyNDUwZDA0NDUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZW1haWwiOiJ0ZXN0MTYwLnN0ZWFsdGhAb3V0bG9vay5jb20ifQ.PP3_HUBePmPb9WE3BXq7BzXhoH7pc9gsvIKn0MiFx7E'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Copy import http.client
import json
conn = http.client.HTTPSConnection("api.hypersecureid.com")
payload = json.dumps({
"transaction_id": 3
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhMzQ3MzcyZS1mNjkwLTRiNmMtODQ4Yi0yY2I3NjM0NDdhNTMifQ.eyJleHAiOjE2OTM0MTE3OTEsImlhdCI6MTY5MzQwODE5MSwianRpIjoiODRmOWYwNzEtM2Q2Ni00NzIwLWI1YTQtZTNkZDIxZmY3ZDg2IiwiaXNzIjoiaHR0cHM6Ly9sb2dpbi1zdGFnZS5oeXBlcnNlY3VyZWlkLmNvbS9hdXRoL3JlYWxtcy9IeXBlcklEIiwic3ViIjoiNjRkODQ1NmQtZDc5My00NzVjLWE3YjUtMmM1OTk5ZWY0ZTllIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiYXBpLXRlc3QiLCJzZXNzaW9uX3N0YXRlIjoiZjk3YmU0Y2MtMWNlYS00MmQ3LTlhYjAtODY4MjQ1MGQwNDQ1IiwicmVnaW9uX2lkIjowLCJzY29wZSI6Im1mYS1hdXRoZW50aWNhdG9yIGVtYWlsIG1mYS1jbGllbnQiLCJzaWQiOiJmOTdiZTRjYy0xY2VhLTQyZDctOWFiMC04NjgyNDUwZDA0NDUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZW1haWwiOiJ0ZXN0MTYwLnN0ZWFsdGhAb3V0bG9vay5jb20ifQ.PP3_HUBePmPb9WE3BXq7BzXhoH7pc9gsvIKn0MiFx7E'
}
conn.request("POST", "/mfa-client/transaction/cancel", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Copy var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "http://api.hypersecureid.com/mfa-client/transaction/cancel");
request.Headers.Add("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhMzQ3MzcyZS1mNjkwLTRiNmMtODQ4Yi0yY2I3NjM0NDdhNTMifQ.eyJleHAiOjE2OTM0MTE3OTEsImlhdCI6MTY5MzQwODE5MSwianRpIjoiODRmOWYwNzEtM2Q2Ni00NzIwLWI1YTQtZTNkZDIxZmY3ZDg2IiwiaXNzIjoiaHR0cHM6Ly9sb2dpbi1zdGFnZS5oeXBlcnNlY3VyZWlkLmNvbS9hdXRoL3JlYWxtcy9IeXBlcklEIiwic3ViIjoiNjRkODQ1NmQtZDc5My00NzVjLWE3YjUtMmM1OTk5ZWY0ZTllIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiYXBpLXRlc3QiLCJzZXNzaW9uX3N0YXRlIjoiZjk3YmU0Y2MtMWNlYS00MmQ3LTlhYjAtODY4MjQ1MGQwNDQ1IiwicmVnaW9uX2lkIjowLCJzY29wZSI6Im1mYS1hdXRoZW50aWNhdG9yIGVtYWlsIG1mYS1jbGllbnQiLCJzaWQiOiJmOTdiZTRjYy0xY2VhLTQyZDctOWFiMC04NjgyNDUwZDA0NDUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZW1haWwiOiJ0ZXN0MTYwLnN0ZWFsdGhAb3V0bG9vay5jb20ifQ.PP3_HUBePmPb9WE3BXq7BzXhoH7pc9gsvIKn0MiFx7E");
var content = new StringContent("{\r\n \"transaction_id\": 3\r\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());