This new Standard Object https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_apextypeimplementor.htm was added as part of Spring '23.

I am wondering if I want to use it in my code if I need to check for CRUD access before making a SOQL request against it. Something like this:

List<ApexTypeImplementor> interfaceImpls = [SELECT ClassName, ClassNamespacePrefix FROM ApexTypeImplementor WHERE InterfaceName = 'Your interface name'];

I couldn't find any information in relation to this.

Also, let's say I have Apex code that will then create an instance of the class that implements my interface name, will this code checks for Apex Class access for the current user before creating a new instance and executing the code?

1 Answer 1


ApexTypeImplementor does not make mention of any permissions associated to it, either in the Release Notes, Apex Developer Guide, or the Salesforce Object Reference. As such, there is presumably no need to check CRUD against this object.

That said, you should probably respect the Enabled Apex Classes permission (SetupEntityAccess). I'm not entirely sure this is a hard requirement, though, as this access is only relevant for top-level classes (e.g. when using an Apex REST call).

  • Thanks a lot! I actually tested manually and even the guest user of an Experience Cloud Site (Community) had access to querying that ApexTypeImplementor so I will assume "everyone" has access. I still used the WITH USER_MODE keywords in the Apex SOQL query just to be sure. And added some error handling. Can never be too safe. Jul 5, 2023 at 20:28

You must log in to answer this question.

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