1

I am attempting to run a REST API Query against my org. The following query selects all of the fields from 'Account' where the name equals a string and the record type equals a specific record type. However, every time I add the word "AND" it is failing with a "bad message 400" "unknown version".

Here is the query...

SELECT+Id+FROM+Account+WHERE+Name='SHOP'+AND+RecordType.Name=+'Property'

Why do I get this error? How can I fix it?

Edit: Full URL

https://my_org_name.my.salesforce.com/services/data/v45.0/query/?q=SELECT+Id+FROM+Account+WHERE+Name='SHOP'+AND+RecordType.Name='Property'
5
  • Your post would be much easier to read if you remove all fields from your SELECT clause except Id.
    – Adrian Larson
    Aug 15, 2019 at 18:50
  • No need to + before and after '='. Remove and retry, should work
    – Raj
    Aug 15, 2019 at 19:10
  • Nope... doesn't work
    – coder42
    Aug 15, 2019 at 19:18
  • What's the full URL you're using to call this API
    – identigral
    Aug 15, 2019 at 19:24
  • Can you make sure if that recordtype name exists in Account object? Or/AND make sure you have an account with name 'Shop'. I do not see any issue at all with the query.. i tried with similar query and did not get any error at all..
    – Raj
    Aug 15, 2019 at 20:18

2 Answers 2

1

Two things: First: The single quotes must be URL encoded. The URL code for a single quote is %27 so like this:

https://my_org_name.my.salesforce.com/services/data/v45.0/query/?q=SELECT+Id+FROM+Account+WHERE+Name=%27SHOP%27+AND+RecordType.Name=%27Property%27

Second: The dot in RecordType.Name is most likely the root of the problem. Normally you should not use a dot in the URI parameters. You can try encoding the dot with %2E or use the encoding utility to encode the whole query string:

String qStr = 'https://my_org_name.my.salesforce.com/services/data/v45.0/query/?q=SELECT Id FROM Account WHERE Name=\'SHOP\' AND RecordType.Name=\'Property\'";
String encodedqStr= EncodingUtil.urlEncode(qStr, 'UTF-8');
2
  • /services/data/v45.0/query/?q=[SOQL query] is part of the standard REST API, and so the developer does not have the ability to change how it works. The SO post you referenced is about having a resource represented by a single period, not about an inability to ever have periods in valid URLs ever. The whole query needs to be URL encoded, but that's it. Aug 15, 2019 at 21:00
  • Oh interesting I wasn't aware SOQL queries are supported as URI params. Then perhaps encoding the URL may work.
    – atomCode
    Aug 15, 2019 at 21:09
0

Its unclear if you are actually able to save it without the escape character \. It should actually not even compile and save. However, I just checked below in my org and its working:

req.setEndpoint('https://my_org_name.my.salesforce.com/services/data/v45.0/query/?q=SELECT+Id+FROM+Account+WHERE+Name=\'SHOP\'+AND+RecordType.Name=\'Property\'');

Note: Ofcourse my_org_name is changed to my domain.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .