I found a different question asking, "Can I have a public APEX REST API?" which led to a blog post explaining how to setup a public site to expose a REST API:
- Create your REST API in Apex as normal
- Create a public site
- Configure the public user to have access to the Apex class and any other sObjects
I followed the directions and have a publicly available site, but when I do a GET to the URL the site returns a HTTP 503 error page. My understanding is that shouldn't even be routed through the VF handler.
Webservice code:
@RestResource(urlMapping='/helloWorld/*')
global class RestWebservice {
@HttpGet
global static String helloWorld(){
return 'HelloWorld';
}
}
URL being queried: https://chale1-developer-edition.na14.force.com/services/apexrest/helloWorld
I have tried:
- Turning on debug logs for the public site user, but that didn't help as no logs recorded the error.
- Verified no redirects are configured
- With and without a header for
Accept: application/json
- Tried on two different dev orgs, on different instances
Answers to questions:
- I have not built any apps in this org, nor are there any installed packages, so there are no namespaces
- Trying /services/apexrest/helloWord/blah returned the same response
- Most of the raw response is just HTML. The headers have content-type of text/html, X-Powered-By: Salesforce.com ApexPages, P3P: CP="CUR OTR STA", cache-control, and nothing else of note
Eventually I would like to have a webhook use this API which is why it needs to be public. What else could cause the service to return a 503?
/something
to the service endpoint?