The Path Based Permissions (PBP) are handled via the *roleList, *Cluster methods of rbacAppSoap. To enable PBP, use the "scm_fgp" (fine grained permissions) argument to addCluster. See the below psudeocode.
from com.collabnet.ce.soap50.webservices import *
from com.collabnet.ce.soap50.webservices.ClientSoapStubFactory import getSoapStub
from com.collabnet.ce.soap50.types import *
hostname = "http://server/"
username = "admin"
password = "admin"
project = "proj1007"
roleName = "tracker"
sfSoap = getSoapStub(cemain.ICollabNetSoap, hostname)
sfSession = sfSoap.login(username,password)
rbacAppSoap = getSoapStub(rbac.IRbacAppSoap, hostname)
roles = rbacAppSoap.getRoleList(sfSession,project).getDataRows().tolist()
roleId = None
for row in roles:
if row.getDescription() == roleName :
roleId = row.getId()
print "found tracker role, %s" % roleId
if roleId == None:
raise Exception("Cant find role ")
clusters = rbacAppSoap.listClusters(sfSession, roleId).getDataRows().tolist()
for row in clusters:
print row.getFolderId(), row.getOperationClusterName()
if row.getOperationClusterName() == "scm_commit":
print "found target!"
rbacAppSoap.removeCluster(sfSession, roleId, row.getOperationClusterName(), row.getFolderId())
rbacAppSoap.addCluster(sfSession, roleId, "scm_fgp", row.getFolderId())
sfSoap.logoff(username,sfSession)