Json request:-
_______________________
{
"AADHAARTYPE": "IND1",
"PANNUMBER": "1174843344",
"STATE": "UP",
"AADHAARID": "136211001811144",
"NAME": "GHOSH",
"IDTYPE": "CARD",
"IDNUMBER": "811144",
"PASSPORT": "M2264445",
"SECURITYCODE": "9",
"BIRTHDATE": "03/10/1999",
"BIRTHTIME": "[Link]",
"REFNUMBER": "20251003AC1",
"PHONENUMBER": "9988888518221"
-------------------------------------------------------------------------------------------------------------------------------
-
Task 1:-
Check AADHAARID value in request is empty or not, if empty then below error throw in
response by api connect
{
"ecode": "400",
"eMessage": "AADHAARID is missing"
}
Gateway Script Code :-
var apim = require('apim');
var reqBody = [Link]('[Link]');
var adId = [Link];
if(!adId || [Link]()==="" || adId === null){
[Link]('[Link]', 400);
var errorResponse = {
"eCode": "400",
"eMessage": "AADHAARID is missing"
};
var eRes = [Link](errorResponse);
[Link]('[Link]', eRes);
return;
}
-----------------------------------------------------------------------------------------------------------------------------
Task 2:-
Convert Date format(DD/MM/YYYY --> YYYY-MM-DD)
Gateway Script Code :-
var apim = require('apim');
var reqBody = [Link]('[Link]');
function convertDateFormat(dateString){
var parts = [Link]('/');
if([Link] === 3){
return parts[2]+'-'+parts[0]+'-'+parts[1];
} else {
return dateString;
}
}
if([Link]){
[Link] = convertDateFormat([Link]);
}
if([Link]){
[Link] = convertDateFormat([Link]);
}
[Link]('[Link]', reqBody);
------------------------------------------------------------------------------------------------------------------------------
Task 3:-
Convert request fields from caps to small and concatenate request in json format like below
{
"aadhaartype": "IND1",
"pannumber": "1174843344",
"state": "UP",
"aadhaarid": "136211001811144",
"name": "GHOSH",
"idtype": "CARD",
"idnumber": "811144",
"passport": "M2264445",
"securitycode": "9",
"birthdate": "1999-10-03",
"birthtime": "[Link]",
"altnumber": "20251003AC1",
"phonenumber": "9988888518221"
}
Gateway Script Code:-
var apim = require('apim');
var reqBody = [Link]('[Link]');
function convertFieldsToLowerCase(obj){
var newObj = {};
for(var key in obj){
if([Link](key)){
newObj[[Link]()] = obj[key];
}
}
return newObj;
}
var newBody = convertFieldsToLowerCase(reqBody);
[Link]('[Link]', newBody);
-------------------------------------------------------------------------------------------------------------------------------
-
Task 4:-
if below fields are not existing in request then add 3 fields to request.
"BIRTHTIME": "",
"REFNUMBER": "",
"PHONENUMBER": ""
Gateway Script Code:-
var apim = require('apim');
var requestBody = [Link]('[Link]');
if (!requestBody["BIRTHTIME"]) {
requestBody["BIRTHTIME"] = "";
}
if (!requestBody["REFNUMBER"]) {
requestBody["REFNUMBER"] = "";
}
if (!requestBody["PHONENUMBER"]) {
requestBody["PHONENUMBER"] = "";
}
[Link]('[Link]', requestBody);
-------------------------------------------------------------------------------------------------------------------------------
-
Task 5:-
inject below headers to the request before sending to backend.
USERNAME = REQUESTOR
PASSWORD = PASSWORD
TOWN = HYDERABAD
JSON RESPONSE :-
_______________________
{
"Warning123": {
"warning": [
{
"wcode": "ST-SAVE-051",
"wdesc": "Successfully Saved"
}
]
},
"upack": {
"name": "N",
"phonenumber": "null",
"refnumber": "null",
"minor": 0,
"birthdate": "1999-10-03",
"status": "Reject",
"birthtime": "[Link]"
}
}
Task 6:-
Remove Warning123 from response and refnumber
Task 7:-
and Convert Date format(YYYY-MM-DD --> DD/MM/YYYY)
Task 8:-
Convert fieldsed from small to caps and concatenate request in json format like below
{
"RESPONSE":
{
"RESULT":
{
"UPACK": {
"NAME": "N",
"PHONENUMBER": "",
"REFNUMBER": "",
"MINOR": 0,
"BIRTHDATE": "1999-10-03",
"STATUS": "Reject",
"BIRTHTIME": "[Link]"
}
}
}
}
Task 9:-
if below fields are not existing in response then add 3 fields to response.
"BIRTHTIME": "",
"REFNUMBER": "",
"PHONENUMBER": ""
—-------------------------------------------------------------------------------------------------------------------
JSON (array) to XML conversion
var apim = require('apim');
var converter = require('json-xml-converter');
// Extract log data
var reqBody = [Link]('[Link]');
var creditUniqueReference =
[Link][0].CreditUniqueReference;
var accountNumber = [Link][0].AccountNumber;
var fromDate = [Link][0].FromDate;
var toDate = [Link][0].ToDate;
// Convert values to strings, defaulting to "N/A" if null/undefined
var reqTime = String([Link] || "N/A");
// Construct JSON for XML conversion
var jsonData = {
"message": {
"reqTime": { "$": reqTime },
"apiname": { "$": apiName }
}
};
// Convert JSON to XML
var xmlDoc = [Link]('badgerfish', jsonData);
[Link]('[Link]', xmlDoc);
—--------------------------------------------------------------------------------------------------------------------
Sending logs
var apim = require('apim');
var urlopen = require('urlopen');
var converter = require('json-xml-converter');
// Extract log data
var logdata = [Link]('log');
var resBody = logdata.response_body;
// Convert values to strings, defaulting to "N/A" if null/undefined
var reqTime = String([Link] || "N/A");
var cid = String(logdata.client_id || "N/A");
var gtId = String(logdata.global_transaction_id || "N/A");
var reqUri = String(logdata.uri_path || "N/A");
var stringreqbody = String(logdata.request_body || "N/A");
var stringresbody = String(logdata.response_body || "N/A");
var catalogs = String(logdata.catalog_name || "N/A");
var appname = String(logdata.app_name || "N/A");
var cip = String(logdata.client_ip || "N/A");
var req_method = String(logdata.request_method || "N/A");
var statusCode = String(logdata.status_code || "N/A"); // Extracting status code
var apiName = String(logdata.api_name || "N/A");
var req_header = [Link](logdata.request_http_headers);
// Construct JSON for XML conversion
var jsonData = {
"message": {
"reqTime": { "$": reqTime },
"cid": { "$": cid },
"gtId": { "$": gtId },
"requri": { "$": reqUri },
"reqBody": { "$": stringreqbody },
"resBody": { "$": stringresbody },
"catalogName": { "$": catalogs },
"appname": { "$": appname },
"cip": { "$": cip },
"request_method": { "$": req_method },
"request_headers": { "$": req_header },
"status_code": { "$": statusCode },
"apiname": { "$": apiName }
}
};
// Convert JSON to XML
var xmlDoc = [Link]('badgerfish', jsonData);
// Define options for sending XML data
var options = {
target: '[Link]
method: 'post',
timeout: 60,
contentType: 'application/xml',
data: xmlDoc
};
// Send the request
[Link](options, function(error, response) {
[Link]('[Link]', resBody);
—--------------------------------------------------------------------------------------------------------------------
Validation Gatwayscript
var apim = require("apim");
// Get request body
var msgBody = [Link]('[Link]');
[Link](msgBody);
//var name = [Link];
// var ifsccode = [Link];
// var accountnumber = [Link];
//
//Check if the accountnumber is a string and has at least 9 digits
// if (typeof accountnumber === 'string' && [Link] >= 9 ) {
// // If valid, set the updated msgBody in the message body
// [Link]('[Link]', [Link](msgBody));
// } else {
// // Handle invalid account number case if needed
// [Link]("Invalid Account Number. It must be a string with at least 9 digits.");
// }
TASK :
Calculate the remaining calls in the Plan for a api
var apim = require('apim');
// Retrieve the rate limit remaining from the headers
var limit = [Link]('[Link].x-ratelimit-remaining');
// Assuming the value is a single number or you want to work with the first value
var remainingCalls = [Link]().replace(';', '');
// Extract only the number from the "name=default,9" string
remainingCalls = [Link](/[^0-9]/g, ''); // This removes any non-numeric
characters
// Retrieve other variables
var planname = [Link]('[Link]');
var planid = [Link]('[Link]');
var totalcalls = [Link]('[Link]-limit');
// Construct the body object with correct variable substitution
var body = {
"PlanID": planid,
"Plan_Name": planname,
"Total_Calls": totalcalls,
"Remaining_calls": remainingCalls
};
// Set the response body
[Link]('[Link]', [Link](body));
TASK : From header to json body in response
var apim = require('apim');
// Retrieve request headers
var userAgent = [Link]('[Link]-Agent'); // User-Agent header
var contentType = [Link]('[Link]-Type'); // Content-Type
header
// Return the headers as a JSON response
var response = {
"User-Agent": userAgent,
"Content-Type": contentType
};
[Link]('[Link]', [Link](response));
TASK : Validate the Age and City of User
var apim = require('apim');
// Get the request body
var message = [Link]('[Link]');
// Extract fields from the message
var name = [Link];
var age = [Link];
var city = [Link];
// Check if all required fields are present and valid
if (name && city && age) {
if (city === "Hyderabad" && age > 21) {
[Link]('[Link]', [Link]({ status: "All required fields are
valid." }));
} else {
[Link]('[Link]', [Link]({ status: "Validation failed: City
must be Hyderabad and Age must be greater than 21." }));
}
} else {
[Link]('[Link]', [Link]({ status: "Validation failed:
Missing required fields." }));
}
Payloading Hiding Task:
● Gateway Script 1 Sign:
var apim = require('apim');
var jose = require('jose');
var reqBody = [Link]('[Link]');
var fetch = [Link](reqBody);
var key = {
"p":
"v7MfUTn421YWWASTYPtx0zfn3-kuYDk69sd1rOLS4oGp8zhnuPeganzJiW75rLN_6me
HQTJIYpJgywIpJ6sqCXnXXXXEycm45Gn0ujXeSPUZhK5frIqSCTwjlT-2h-Qz1Y1hlD3i3
4rQUVAdyA0NHkuvxEmDhyoTWsrT467j6wU",
"kty": "RSA",
"q":
"vHlZwyOJL39pQrfIN7CMxULk0m0TV-MYha4mNffvMnF0BdlVvSR9ybqZkMkxguERws
CjkHX-UWZYx3ur4bofKBzx5SchFiqK-sS6fp0EhFzKqsFWTgQiX5Ng-ySgP4ZqBuwCgX
g815pR7IM8lL_R0hEydjkJAQ1H60PxxedjJu8",
"d":
"K3onfcIC4TL1-wIN6-j804WLQGaQxnXD3Q_DOsLyFTJzBe_zoeCVIqjZH9_4jTVFn5bD
_J3_JP7ksWZRXmyq8QrKCyD3I9nWv3LqphwMVPGDYqigQ1K-2riOi-7ZfD4v8pyTo1C
EFXzGm1DnfKAZQYCRMmCWDLXoGXPgyAIVbDW0cArzchcxlv55bv2ixZD_pf6-7hca
Ac_QXxAJbrK1g_dekiV5P8gSDhSrpyWYlm9GTeunfgqlijQUOlnzYzALat3FfIqD01ibjPkk
nkpEL8IqBManPeA4FaDK9r-KNLuBpByCv5dqnb0i6QejrCoFoxIh5XMDrO3Sj2EBp37P
2Q",
"e": "AQAB",
"use": "sig",
"qi":
"N_MDV5ncCFx3qyk-j-4_-EIhTV0deFhIuIG_U0zYJq7fzgww_Dj8OHivD9-I1dl76sXYTTw
a12sMAULw3p8iADMWVxeHXjXF2vlquKY3NNx9GCrLmM_OcOaAIoxVPaAeBp1PpLr
OZaNnXuLxfqBZH3PsawTU2v6dDjMjXBVMhFU",
"dp":
"p_f7aOCy_Pzhdx4LRN8NTVWfBsL6r7V1xOXgZiwZO_8BOuwhdiEDnkrZDGMAwiJF4
s3z5Vx5sGUyCq9KAEgp_UOVQX7_fxARwZJVrROmQacBRRDFJBoG-7CGPTAmb8u0
31mSNqJDODwZbCYW8kL9S55l1EfVx4lGjDdMkiOb8UE",
"alg": "RS256",
"dq":
"KA6-pjviR2cUDysSccujT7W0_ohSSSaqKpdl5aiJfTYhy7ByiZ284mg3hU9Np5yAct0Qpn
59i_1ttxAw6uvs_VCRlPupC5YFLeEsJgbnU96I8Jvg5Pn5-EhRn28cZAQEeu4kZjIQ9F4H
NXZ7JL5UMQqYqAndQQz6kSVCuKZCK58",
"n":
"jSJp4Nnnd265vSAN-R0PQr2NksvJCCKFAAiGVyPvAqgq0CuJyxNgHmgm9nC7bYqxjw
ZL8kej0-YaZ2GvY41wdO7iAqZ3_Xnz62C2gYyqsAyvMQJOilP-5xnycDy7C-COOx8iC31
88BJprX8hACJcnGUe3OLHEd2logolqJ6FMj8K9kHqEJKi-Rrt5fMb1o8Wwu3uL24wlXhg
B2XmdwsFWVSbHaJ4ZT-jtwwwa4oK-Ru_Wv0mdV33QCw-l6A7r90NXFH-turtGgt7VVe
pAsCL1vykfH0Bx3eOiD2zucwLbHbcm9uK_duTJeQ0pbLaiMzAxnszpQmzHM-BnniUgZ
onqw"
};
var header = [Link](key, 'RS256');
var signer = [Link](header);
[Link](fetch);
[Link]('compact', function(error, jwsString){
if(error){
[Link](error);
} else {
[Link]('[Link]', jwsString);
}
});
● Gateway Script for splitting and hiding the payload:
var apim = require('apim');
var bod = [Link]('[Link]');
var split = [Link]('.');
var partOne = split[0];
var partThree = split[2];
var partTwo = 'X'.repeat(split[1].length);
var result = `${partOne}.${partTwo}.${partThree}`;
[Link]('[Link]', result);