# Salesforce

O conector **Salesforce** permite realizar operações na plataforma Salesforce.

## **Parâmetros**

Dê uma olhada nos parâmetros de configuração do conector. Parâmetros suportados por [expressões Double Braces](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/overview) estão marcados com `(DB)`.

### **Aba General**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Fail On Error</strong></td><td>Se ativado, interrompe a execução do pipeline ao ocorrer um erro. Se desativado, a execução continua, mas a propriedade <code>"success"</code> será definida como <code>false</code>.</td><td>False</td><td>Booleano</td></tr></tbody></table>

### **Aba Authentication**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Salesforce Login URL</strong> <code>(DB)</code></td><td>URL usada para autenticação no Salesforce.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Salesforce Client Account</strong></td><td>Conta do Connected App com o ID do cliente. Tipo suportado: <strong>OAuth Provider</strong>.</td><td>N/A</td><td>Account</td></tr><tr><td><strong>OAuth Authentication Flow</strong></td><td>Tipo de autenticação usada no app do Salesforce: <strong>JWT Bearer Token Flow</strong> ou <strong>Username-Password Flow</strong>.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Operation Account</strong></td><td>Conta usada para realizar operações no Salesforce. Contas suportadas: <strong>Basic</strong>, <strong>Certificate-Chain.</strong></td><td>N/A</td><td>Account</td></tr><tr><td><strong>Subject</strong></td><td>Usuário usado para autenticação com o app do Salesforce. Disponível apenas com o <strong>JWT Bearer Token Flow</strong>.</td><td>N/A</td><td>String</td></tr></tbody></table>

### **Aba Salesforce API**

O conector **Salesforce** pode recuperar automaticamente todas as entidades disponíveis na plataforma Salesforce para simplificar a configuração.

{% hint style="warning" %}
**Informações importantes:**

* Para usar esse recurso, é necessário configurar uma conta e uma URL válidas do Salesforce. Se nenhuma conta for selecionada em **Operation Account** ou se as credenciais forem inválidas, o conector muda automaticamente para o modo **RAW**, que exige configuração manual.
* Em [**Cápsulas**](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/build-overview/capsulas), apenas o modo **RAW** é suportado. Isso significa que todas as configurações, incluindo o parâmetro **API Version**, devem ser feitas manualmente. O uso da sintaxe [Double Braces](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/overview) é suportado.
  {% endhint %}

#### **Reutilização do AuthToken**

Ao acessar a aba **Salesforce API**, o conector gera um token de acesso com validade limitada, que pode expirar.

Para evitar a regeneração frequente do token, a Digibee oferece a funcionalidade de **AuthToken Reuse** para o fluxo username-password. Isso permite configurar uma nova conexão no portal do Salesforce e reutilizar o token existente.

Veja [como configurar esse mecanismo](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/enterprise-applications/salesforce/authtoken-reuse-salesforce).

#### **Parâmetros da aba Salesforce API**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>API Version</strong></td><td>Versão da API do Salesforce.</td><td>{latest version}</td><td>String</td></tr><tr><td><strong>API Protocol</strong></td><td>API do Salesforce a ser usada: <strong>Bulk</strong>, <strong>Bulk 2.0</strong>, <strong>RAW</strong> e <strong>Rest</strong>.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Operation</strong></td><td>Operação a ser executada na API do Salesforce. Veja abaixo, em uma seção dedicada, as opções disponíveis para cada tipo de API.</td><td>N/A</td><td>String</td></tr></tbody></table>

#### **Parâmetros do modo RAW**

Quando o **API Protocol** está definido como **RAW**, os seguintes parâmetros devem ser configurados manualmente:

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Method</strong></td><td>Método HTTP a ser utilizado.</td><td><code>GET</code></td><td>String</td></tr><tr><td><strong>Path</strong> <code>(DB)</code></td><td>Caminho do endpoint da API do Salesforce. Certifique-se de incluir a versão da API no caminho.</td><td><code>/services/data/v51/sobjects/Account/</code></td><td>String</td></tr><tr><td><strong>Headers</strong> <code>(DB)</code></td><td>Cabeçalhos da requisição necessários.</td><td><code>Content-Type: application/json</code></td><td>String</td></tr><tr><td><strong>Object Fields</strong></td><td>Lista de chaves que devem corresponder às definidas no campo <strong>Headers</strong>. Essas chaves são obrigatórias aqui para garantir o processamento correto da requisição. Se um header não estiver listado neste campo, ele não será incluído na requisição.</td><td><code>Content-Type</code></td><td>String</td></tr><tr><td><strong>Body</strong> <code>(DB)</code></td><td>Corpo da requisição.</td><td>N/A</td><td>JSON</td></tr></tbody></table>

#### **Operações disponíveis por tipo de API**

**Bulk:**

* Abort Job
* Close Job
* Create Batch
* Create Batch Query
* Create Job
* Get All Batches
* Get Batch
* Get Job
* Get Query Result
* Get Query Result Ids
* Get Request
* Get Results

**Bulk 2.0:**

* Abort Job
* Abort Query Job
* Close Job
* Create Batch
* Create Job
* Create Query Job
* Delete Job
* Delete Query Job
* Get All Jobs
* Get All Query Jobs
* Get Failed Results
* Get Job
* Get Query Job
* Get Query Job Results
* Get Successful Results
* Get Unprocessed Records

**Rest:**

* Apex Call
* Approval
* Approvals
* Composite
* Composite-batch
* Composite Create SObject Collections
* Composite Delete SObject Collections
* Composite Retrieve SObject Collections
* Composite-tree
* Composite Update SObject Collections
* Composite Upsert SObject Collections
* Create SObject
* Delete SObject
* Delete SObject With Id
* Get Basic Info
* Get Blob Field
* Get Description
* Get Global Objects
* Get Resources
* Get SObject
* Get SObject With Id
* Get Versions
* Limits
* Query
* Query All
* Query More
* Recent
* Search
* Update SObject
* Upsert SObject

### **Aba Advanced settings**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Fields to NULL</strong></td><td>Define se os campos do SObject com valores nulos devem ser considerados pela API do Salesforce. Por padrão, o Salesforce ignora SObjects com campos nulos.</td><td>False</td><td>Booleano</td></tr></tbody></table>

### **Aba Documentation**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td>Campo opcional para descrever a configuração do conector e quaisquer regras de negócio relevantes.</td><td>N/A</td><td>String</td></tr></tbody></table>

## **Notas adicionais**

### **Protocolo REST**

#### **Operação Composite**

Ao usar a operação **Composite**, é necessário remover o caminho base da propriedade `url` para garantir que o conector funcione corretamente. Por exemplo:

```json
{
  "method": "POST",
  "url": "/services/data/v59.0/sobjects/Account",
  "referenceId": "refAccount",
  "body": {
    "Name": "Sample Account"
  }
}
```

Nesse caso, remova a parte `/services/data/v59.0` da propriedade `url`.

Após a edição, a `url` correta deve ser:

```json
{
  "method": "POST",
  "url": "/sobjects/Account",
  "referenceId": "refAccount",
  "body": {
    "Name": "Sample Account"
  }
}
```

#### **Operação Composite Update SObject Collections**

A saída esperada desta operação é:

```json
{
  "success": true,
  "data": [
    {
      "id": "003ak00000XgSkrAAF",
      "errors": [],
      "success": true
    },
    {
      "id": "003ak00000XgSksAAF",
      "errors": [],
      "success": true
    },
    {
      "id": "003ak00000XgSktAAF",
      "errors": [],
      "success": true
    }
  ]
}
```

#### **Operação Get Blob Field**

Para esta operação, o arquivo pode ser recebido de duas formas:

* Como uma string em base64
* Como um arquivo armazenado no diretório local do pipeline

Por padrão, o arquivo é recebido em formato base64. Para armazená-lo como um arquivo local no diretório do pipeline, ative a flag **Save as Local File** e especifique o nome do arquivo no campo **File Name**. Você poderá, em seguida, usar conectores de leitura de arquivos no fluxo para processar o arquivo salvo.

#### **Operação Query**

Para qualquer operação do tipo **Query** (como **Query**, **Query All** ou **Query More**), use o seguinte padrão:

```json
{
  "q": "SELECT Id, LastName, Company FROM Lead ORDER BY CreatedDate DESC LIMIT 5"
}
```

Se quiser usar [expressões com Double Braces](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces), escreva da seguinte forma:

```json
{
  "q": "{{ message.query }}"
}
```

### **Protocolo Bulk 2.0**

#### **Operação Create Batch**

O resultado esperado para esta operação é:

```json
{
  "success": true,
  "data": {
    "HttpResponseCode": "201",
    "HttpResponseText": "Created",
    "Content-type": "text/csv",
    "Sforce-Limit-Info": "api-usage=4184/15000"
  }
}
```
