This example demonstrates how to operate with data sources.
The example uses API authentication driven from JavaScript. See Authentication APIs for alternatives.
var pyramidURL = "http://mysite.com/api3/";
let token = callApi("authentication/authenticateUser",{
"userName":"adminUser",
"password":"12345678"
},"",false);
log("got token "+token);
let findRole = callApi("access/findRoles",{
"searchValue": "role1",
"searchMatchType": 2
},token
);
let roleId=findRole[0].roleId;
log("found role with id= "+ roleId);
let createDataServer = callApi("dataSources/createDataServer",{
"serverName": "new server",
"serverType":13,
"serverIp": "172.29.3.178",
"port":5060,
"serverAuthenticationMethod":0,
"userName":"default",
"password":"password",
},token
);
let dataServerId=createDataServer.modifiedList[0].id;
log("created dataserver= "+ dataServerId);
let addRolesToServer = callApi("dataSources/addRolesToServer",{
"itemId":dataServerId,
"itemRolePairList":[{
"roleId":roleId,
"accessType":2
}]
},token);
log("added role1 to the newly created server");
let getRolesByServer= callApi("dataSources/getRolesByServer",dataServerId,token);
let recognizeDataBase = callApi("dataSources/recognizeDataBase",{
"serverId":dataServerId,
"dbName":"PyramidDemo"
},token);
let databaseId=recognizeDataBase.modifiedList[0].id;
log("found database "+databaseId+" at the dataserver");
let addRolesToDataBase = callApi("dataSources/addRolesToDataBase",{
"itemId":databaseId,
"itemRolePairList":[{
"roleId":roleId,
"accessType":3
}]
},token);
let file="http://myOtherSite.com/SampleModel.pie";
let modelData=readPieFile(file);
let importModel = callApi("dataSources/importModel",{
"fileZippedData":modelData,
"databaseId":databaseId,
"materializedRoleAssignmentType":3
},token);
let addRolesToModel = callApi("dataSources/addRolesToModel",{
"itemId":importModel.modelId,
"itemRolePairList":[{
"roleId":roleId,
"accessType":3
}]
},token);
let deleteMaterializedModel = callApi("dataSources/deleteMaterializedModel",importModel.modelId,token);
let deleteDataBase=callApi("dataSources/deleteDataBase",databaseId,token);
let deleteDataSource = callApi("dataSources/deleteDataSource",dataServerId,token);
function log(msg){
document.write(msg);
console.log(msg);
}
function callApi(path,data,token="",parseResult=true){
var xhttp = new XMLHttpRequest();
xhttp.open("POST", pyramidURL+path, false);
xhttp.setRequestHeader("paToken",token)
xhttp.send(JSON.stringify(data));
if(parseResult){
return JSON.parse(xhttp.responseText);
}else{
return xhttp.responseText;
}
}
function readPieFile(file){
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.send(null);
rawFile.onreadystatechange = function () {
if (request.readyState === 4 && request.status === 200) {
return request.responseText;
}
}
}