Simplifique chamadas à API da sua organização do Apex code

Use o novo método System.Url.getOrgDomainUrl() para interagir com as APIs SOAP e REST do Salesforce no Apex code. Obtenha pontos de extremidade para chamadas à API da interface de usuário para criar e personalizar campos personalizados e conjuntos de valores da lista de opções e muito mais. Use o método System.UserInfo.getSessionId() atualizado para recuperar IDs da sessão, mesmo quando seu código é executado de maneira assíncrona.

Onde: Essa alteração se aplica ao Lightning Experience, ao Salesforce Classic e a todas as versões do aplicativo Salesforce nas edições Professional, Enterprise, Performance, Unlimited, Developer e Database.com.

Por quê: Anteriormente, organizações com Meu domínio habilitado podiam acessar alguns recursos de API do Apex code somente depois de definir configurações do site remoto ou credenciais nomeadas. Alguns objetos, como DatedExchangeRate, são acessíveis somente por meio da API. Agora você pode interagir com esses objetos usando o Apex code, criando pontos de extremidade com o método System.Url.getOrgDomainUrl(). Você também pode usar os pontos de extremidade para acessar as informações de limites da sua organização, invocar fluxos, interagir com exibições de lista e assim por diante.

As chamadas à API às vezes exigem uma ID da sessão e um URL. Você pode obter essa ID da sessão usando o método System.UserInfo.getSessionId(). Esse método antes retornava null no Apex assíncrono, mas agora retorna um valor se ele é executado tanto de modo síncrono quanto assíncrono.

Como: Use getOrgDomainUrl() em organizações com ou sem Meu domínio para receber URLs canônicos. Por exemplo: https://yourDomain.my.salesforce.com ou, para organizações sem Meu domínio habilitado, https://yourInstance.salesforce.com

Este exemplo usa a API da interface de usuário para obter valores padrão para que você possa clonar um registro.
Http h = new Http();
HttpRequest req = new HttpRequest();  
req.setEndpoint(Url.getOrgDomainUrl().toExternalForm()
   + '/services/data/v44.0/limits');
req.setMethod('GET');
req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
HttpResponse res = h.send(req);

Você pode usar getSessionId() tanto de modo síncrono quanto assíncrono. No Apex assíncrono (Apex agendado, Enfileirável, Futuro ou em Lote), esse método retorna a ID da sessão apenas quando o código é executado por um usuário válido ativo. Quando o código é executado por um usuário interno, como o processo automatizado ou um usuário proxy, o método retorna null.

Você não pode fazer chamadas à API usando o código JavaScript dos componentes do Lightning, incluindo o código do controlador do Apex relacionado. Esse comportamento não mudou em relação a versões anteriores.