+ Start a Discussion

Publishing a document into Content workspace using API

I have been trying to upload a file to the 'Content' area using API (from my Java program) -- but it is ending up in the Personal workspace instead of where I want it to go (another workspace I have created for this purpose). No matter what I try, it appears to have no effect! So I am wondering if it is really possible to publish to a workspace using API? If it is, could someone please tell me what I am doing wrong (obviously, I am a newbie -- so please help!)?




Here is my code snippet:



  ContentVersion cv = new ContentVersion();

  File file = new File("C:/tests/test.txt");

  byte[] myFileByteArray = null;


  ContentWorkspaceDoc wsDoc = new ContentWorkspaceDoc();

  ContentWorkspace ws = null;



  QueryResult qr = binding.query("SELECT id from ContentWorkspace WHERE name = 'Email Attachments' limit 1");

  SObject[] records = qr.getRecords();


  if (qr.getSize() > 0){

  System.out.println("Workspace found");

  ws = (ContentWorkspace) records[0];



  myFileByteArray = getBytesFromFile(file);



         cv.setTitle("Attachment via API");




        System.out.println("Workspace set");






  SaveResult sr = binding.create(new com.sforce.soap.enterprise.sobject.SObject[] {cv})[0];

  if (sr.isSuccess()) {

         System.out.println("Successfully added attachment.");

        System.out.println("Status = " + cv.getPublishStatus());

    } else {

        System.out.println("Error adding attachment: " +sr.getErrors(0).getMessage());



 }catch (Exception e){




Best Answer chosen by Admin (Salesforce Developers) 

Obviously, I was doing it wrong. All I needed to do was set the 'FirstPublishLocationId' property on ContentVersion to the ID of the workspace where I wanted the document to appear. Problem solved!