0

I'm trying to programmatically upload a file (AttachedContentDocument) to an Account as an attachment using the REST API. This doesn't seem to be documented by Salesforce.

When I use the Lightning UI to upload the file on the "Documents" tab of an account, the URL it opens is /lightning/r/AttachedContentDocument/id... so I'm trying to upload a AttachedContentDocument.

I'm crafting a request body that looks like:

--boundary_string
Content-Disposition: form-data; name="entity_attachedcontentdocument";
Content-Type: application/json

{
   "Title": "hello",
   "FileExtension": "png"
}

--boundary_string
Content-Type: application/png
Content-Disposition: form-data; name="Body"; filename="myfile.png"

... binary data of file ....

All of the examples online for inserting files into salesforce use this multipart body. Note I changed the name to name="entity_attachedcontentdocument" to reflect the sObject type being inserted. Then I craft a request:

curl https://mydomain.salesforce.com/services/data/v53.0/sobjects/AttachedContentDocument/ -H 'Authorization: ...' -H "Content-Type: multipart/form-data; boundary="boundary_string"" --data-binary @binaryjson

This errors with:

[{"message":"Invalid field: 'Body'","errorCode":"INVALID_FIELD"}]

Looking at the AttachedContentDocument documentation page there's no documentation on which field data is supposed to go into.

I get the same error changing the endpoint and entity name to /ContentDocument/. And no field name seems to work, not Body/Content/File.

Is it possible to use this API?

1 Answer 1

1

As the documentation you linked states:

This read-only object contains all ContentDocument objects associated with an object.

For more information, see AttachedContentDocument in the Object Reference for Salesforce and Lightning Platform.

If you go there, it says:

Use this object to list all ContentDocument objects attached to an object via a feed post.

To retrieve ContentDocument objects, issue a describe call on an object, which returns a query result for each activity since the record was created. You can’t directly query this object.

So, you actually need a FeedItem, which has superseded the old FeedPost object. The fields you need will be found in the documentation for FeedItem.

2
  • I'm confused. I'm trying to upload a file and attach it to a user account. I don't think i want a FeedItem? I may have found a way to do this with ContentVersion and i'm asking a new question
    – Andy Ray
    Oct 21, 2021 at 17:22
  • @AndyRay Oh, your question just said "Account", so I thought you meant the CRM object. Still, according to the docs, you can attach files to a User this way.
    – sfdcfox
    Oct 21, 2021 at 17:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.