Verify OTP by Relation Reference
curl --request POST \
--url https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"UniquerefID": "jane.doe@example.com",
"OTP": 123456,
"DestinationAddress": "192.168.1.1",
"Destination": "Web",
"OtpType": "LOGIN",
"ProgramId": 19,
"RelationType": 4
}
'import requests
url = "https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference"
payload = {
"UniquerefID": "jane.doe@example.com",
"OTP": 123456,
"DestinationAddress": "192.168.1.1",
"Destination": "Web",
"OtpType": "LOGIN",
"ProgramId": 19,
"RelationType": 4
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
UniquerefID: 'jane.doe@example.com',
OTP: 123456,
DestinationAddress: '192.168.1.1',
Destination: 'Web',
OtpType: 'LOGIN',
ProgramId: 19,
RelationType: 4
})
};
fetch('https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'UniquerefID' => 'jane.doe@example.com',
'OTP' => 123456,
'DestinationAddress' => '192.168.1.1',
'Destination' => 'Web',
'OtpType' => 'LOGIN',
'ProgramId' => 19,
'RelationType' => 4
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference"
payload := strings.NewReader("{\n \"UniquerefID\": \"jane.doe@example.com\",\n \"OTP\": 123456,\n \"DestinationAddress\": \"192.168.1.1\",\n \"Destination\": \"Web\",\n \"OtpType\": \"LOGIN\",\n \"ProgramId\": 19,\n \"RelationType\": 4\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"UniquerefID\": \"jane.doe@example.com\",\n \"OTP\": 123456,\n \"DestinationAddress\": \"192.168.1.1\",\n \"Destination\": \"Web\",\n \"OtpType\": \"LOGIN\",\n \"ProgramId\": 19,\n \"RelationType\": 4\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"UniquerefID\": \"jane.doe@example.com\",\n \"OTP\": 123456,\n \"DestinationAddress\": \"192.168.1.1\",\n \"Destination\": \"Web\",\n \"OtpType\": \"LOGIN\",\n \"ProgramId\": 19,\n \"RelationType\": 4\n}"
response = http.request(request)
puts response.read_body{
"results": {
"IsSucessful": true,
"ErrorCode": "000",
"ExceptionMessage": "Success",
"ReturnObject": true
}
}OTP
Verify OTP by Relation Reference
Validate a LOGIN OTP using a member’s RelationReference via the Loyalife API.
POST
/
lbms-ingress
/
member
/
api
/
Member
/
VerifyOTPByRelationReference
Verify OTP by Relation Reference
curl --request POST \
--url https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"UniquerefID": "jane.doe@example.com",
"OTP": 123456,
"DestinationAddress": "192.168.1.1",
"Destination": "Web",
"OtpType": "LOGIN",
"ProgramId": 19,
"RelationType": 4
}
'import requests
url = "https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference"
payload = {
"UniquerefID": "jane.doe@example.com",
"OTP": 123456,
"DestinationAddress": "192.168.1.1",
"Destination": "Web",
"OtpType": "LOGIN",
"ProgramId": 19,
"RelationType": 4
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
UniquerefID: 'jane.doe@example.com',
OTP: 123456,
DestinationAddress: '192.168.1.1',
Destination: 'Web',
OtpType: 'LOGIN',
ProgramId: 19,
RelationType: 4
})
};
fetch('https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'UniquerefID' => 'jane.doe@example.com',
'OTP' => 123456,
'DestinationAddress' => '192.168.1.1',
'Destination' => 'Web',
'OtpType' => 'LOGIN',
'ProgramId' => 19,
'RelationType' => 4
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference"
payload := strings.NewReader("{\n \"UniquerefID\": \"jane.doe@example.com\",\n \"OTP\": 123456,\n \"DestinationAddress\": \"192.168.1.1\",\n \"Destination\": \"Web\",\n \"OtpType\": \"LOGIN\",\n \"ProgramId\": 19,\n \"RelationType\": 4\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"UniquerefID\": \"jane.doe@example.com\",\n \"OTP\": 123456,\n \"DestinationAddress\": \"192.168.1.1\",\n \"Destination\": \"Web\",\n \"OtpType\": \"LOGIN\",\n \"ProgramId\": 19,\n \"RelationType\": 4\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://loyalife-api.xoxoday.in/lbms-ingress/member/api/Member/VerifyOTPByRelationReference")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"UniquerefID\": \"jane.doe@example.com\",\n \"OTP\": 123456,\n \"DestinationAddress\": \"192.168.1.1\",\n \"Destination\": \"Web\",\n \"OtpType\": \"LOGIN\",\n \"ProgramId\": 19,\n \"RelationType\": 4\n}"
response = http.request(request)
puts response.read_body{
"results": {
"IsSucessful": true,
"ErrorCode": "000",
"ExceptionMessage": "Success",
"ReturnObject": true
}
}Completes the OTP verification for a member identified by their
RelationReference. This is the second and final step of the CID-based OTP flow — call this after Generate OTP by Relation Reference has dispatched the code. The OtpType must match exactly what was used in the generate call; a mismatch will result in a failed verification even if the numeric code is correct.
OTP expiry duration and maximum attempt limits are configurable at the program level in Loyalife Admin — confirm these values with your Xoxoday implementation contact.
Responses
200 — Success
200 — Success
| Path | Type | Description |
|---|---|---|
results.IsSucessful | boolean | true |
results.ErrorCode | string | 000 |
results.ExceptionMessage | string | Success |
results.ReturnObject | boolean | true on successful verification |
Authorizations
JWT obtained from Generate Auth Token. Pass as Authorization: bearer {token}.
Body
application/json
The member's RelationReference (CID)
Example:
"jane.doe@example.com"
Example:
123456
Example:
"192.168.1.1"
Available options:
Web, Mobile Example:
"Web"
Purpose of the OTP. Must match between Generate and Verify calls.
Available options:
ACTIVATION, LOGIN, FORGOTPWD, CHANGEPASSWORD, RESETPASSWORD, FORGOTUSERNAME, TwoFA, UNBLOCKMEMBER, NONE, CASHBACKCONFIRM, POINTTRANSFERCONFIRM, FAMILYPOOLINGMERGE, FAMILYPOOLINGUNMERGE, AIRREVIEWNCONFIRM, DOMESTICFLIGHTREVIEWNCONFIRM, HOTELREVIEWNCONFIRM, CARREVIEWNCONFIRM, GIFTCARDREVIEWNCONFIRM, PACKAGEREVIEWNCONFIRM, SHOPREVIEWNCONFIRM, SHOPDIGITALREVIEWNCONFIRM, MERCHANTREVIEWNCONFIRM, ISPREVIEWNCONFIRM, INSURANCEREVIEWNCONFIRM Example:
"LOGIN"
Example:
19
Example:
4
Response
200 - application/json
OTP verified