Purge Content Items

{ purgeContentItems }

Permanently delete content items



  • API Section: /API2/content
  • API Version: 2.0
  • From Release: 2018.5
  • Method operates via POST actions only.
  • Input Parameters




    A list of system content item IDs

    Output Response

    Successful Result Code


    Response Type

    Description of Response Type

    Generic API response object with success or failure flag and related messages.


    BEWARE: Purging is a hard, permanent delete and cannot be undone. See the 'softDeleteContentItems' method for non-permanent deletion.

    Content Operations (JavaScript):

    This example demonstrates how to manage content items in Pyramid.

    The example uses API authentication driven from JavaScript. See Authentication APIs for alternatives.

    // URL of the Pyramid installation and the path to the API 2.0 REST methods
    var pyramidURL = "http://mySite.com/api2/";
    // step 1: authenticate admin account and get token
    // NOTE: callApi method is a generic REST method shown below.
    let token = callApi("auth/authenticateUser",{
    log("got token "+token);
    //step 2: get the default tenant ID
    let defaultTenant=callApi("access/getDefaultTenant",{
    	"auth": token // admin token generated above
    //step 3: return the ID of the public root folder for the tenant from step 2
    let tenentPublicFolder = callApi("content/getPublicOrGroupFolderByTenantId",{
    	"folderTenantObject": {
    		"validRootFolderType": 1,//the public folder of the default tenant
    		"tenantId": defaultTenant
    	"auth": token //admin token generated from step 1 above
    //step 4: add a new folder to the public folder from step 3
    let folderCreation = callApi("content/createNewFolder",{
    	"folderTenantObject": {
    		"parentFolderId": tenentPublicFolder.id,
    		"folderName": "new folder"
    	"auth": token
    let folderId=folderCreation.modifiedList[0].id;
    //step 5: find roles
    let findRole = callApi("access/getRolesByName",{
    	"data": {
    		"searchValue": "role1",
    		"searchMatchType": 2//SearchMatchType.Equals
    	"auth": token
    let roleId=findRole.data[0].roleId;
    log("found role with id= "+ roleId);
    //step 6:add the role we found in step 5 to the folder we created (folderId) in step 4
    let addRoleToFolder= callApi("content/addRoleToItem",{
    	"roleToItemApiData": {
    		"itemId": folderId,
    		"roleId": roleId//SearchMatchType.Equals
    	"auth": token
    //step 7: read in a Pyramid Import/Export ('PIE') file
    let file="http://myOtherSite.com/Sample.pie";
    let pieFile=readPieFile(file);
    //step 8: import the PIT file into the folder from step 4
    let importContent = callApi("content/importContent",{
    	"pieApiObject": {
    		"rootFolderId": folderId, //from step 4
    		"fileZippedData": pieFile, //the file's content from step 7
    		"clashDefaultOption":1,//ClashDefaultOption.REPLACE_FILE like default
    		"rolesAssignmentType":3//RoleAssignmentType.ForceParentFolderRoles take roles from parent folder
    	"auth": token
    let itemId=Object.keys(importContent.importDscMap)[0];
    //step 9: optional, search for the item we just imported, it's id is itemId
    let findContentItem = callApi("content/findContentItem",{
    	"auth": token
    //step 10: check if you need to run datasource changer 
    // (since the datasource that created this report dosen't exists on this server)
    	step 10A: get item's data source connection
    	let correntConnectionStringId=importContent.importDscMap[itemId][0].connectionStringProperties.id
    	//step 10B: run the data source changer on the items
    	let changedDatasource = callApi("dataSources/changeDataSource",{
    			"toConnId":"55ff277a-53ff-4c39-8f15-5651f1026a2d",//retrive this id using 'getAllConnectionStrings'
    		"auth": token
    //step 11: copying the imported item to the tenant root folder
    let copyItems = callApi("content/copyItems",{
    	"auth": token
    //step 12: remove roles from the folder but not from the item
    let removeRoleFromCreatedFolder= callApi("content/removeRolesFromItem",{
    	"rolesInItemRemovalObject": {
    		"itemId": folderId,
    		"roleIds": [roleId]
    	"auth": token
    //step 13: hard delete the folder (permanently)
    let folderDeletion = callApi("content/purgeContentItems",{
    	"auth": token
    //step 14: soft-delete the items
    let itemSoftDeletion = callApi("content/softDeleteContentItems",{
    	"auth": token
    function log(msg){
    function callApi(path,data,parseResult=true){
    	var xhttp = new XMLHttpRequest();
    	xhttp.open("POST", pyramidURL+path, false);
    		return JSON.parse(xhttp.responseText);
    		return xhttp.responseText;
    //example function to read in the contents of a 'PIE' file that contains
    //exported Pyramid content.
    function readPieFile(file){
    	var rawFile = new XMLHttpRequest();
    	rawFile.open("GET", file, false);
    	rawFile.onreadystatechange = function () {
    		if (request.readyState === 4 && request.status === 200) {
    			return request.responseText;