5

I have a blog on a force.com site. The content is read from a custom object that has rich text fields (yes, we rolled our own CMS and run through salesforce approval processes...it's a long story!)

When I put images in these fields, the url for them ends up looking something like this: http://www.mytruecost.com/servlet/rtaImage?eid=a0U30000008KTl4&feoid=00N30000008ck1W&refid=0EM30000000UE2I

What do those parameters refer to? eid seems to be the custom object that housing the content. feid is the field id. I found those by cutting and pasting the ids into my salesfore url.

But refid gives me an "insufficient priveleges" message. What is it?

  • Good question. I found two board posts (1, 2) that ask a similar question, but no answers. Omitting that parameter is enough to break the link. Changing it gives an "Image not found" placeholder. – Daniel Ballinger Oct 8 '13 at 23:58
6

eid is a custom object, the "entity ID". Presumably, you could use this to view an instance of your record.

feoid is the "field entity ID". This describes the field that the content is stored in. You can see this value when you're looking at the field in the Setup screen.

refid is an ID of the type ContentReference. We're not able to describe this object, so it's safe to assume that it is also unqueryable from any code we could write.

Execute Anonymous:

System.debug(System.LoggingLevel.ERROR, Id.valueOf('0EM30000000UE2I').getSObjectType());

Output:

ContentReference

Execute Anonymous:

System.debug(System.LoggingLevel.ERROR, Id.valueOf('0EM30000000UE2I').getSObjectType().getDescribe());

Output:

Internal Server Error (...)

In conclusion, it may be necessary, but it is not something that we are subject to viewing. It's also undocumented, so I wouldn't try messing with it.

0
  1. Search Daniel Ballinger's list of ID prefixes for the first three characters of your object. (If that's an actual SFID, it's not there.)
  2. Try going to https://[instance].salesforce.com/0EM/e , again assuming real SFID above - that should open a new record of that object for editing, assuming you have create permissions.
  3. Run the following code as an anonymous block in Workbench or Dev Console. It works, but may not be the best method. (I welcome comments from more knowledgeable SF SE peeps.)

    Id objID = '0EM30000000UE2I';
    Schema.SObjectType obj = objID.getSObjectType();
    Schema.DescribeSObjectResult dr = obj.getDescribe();
    System.Debug(dr.getName());
    

(Thanks to Andrew Fawcett for his answer on 421 )

  • 1
    Not all ID prefixes are publicly documented. Also, you can't always pull a describe. See my answer which appears to work 100% of the time. – sfdcfox Oct 9 '13 at 0:57

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.