> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rwsintegration.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Integração com múltiplas extrações

> Aprenda como extrair dados de múltiplas fontes em uma única integração

Este guia mostra como criar uma integração que extrai dados de posts do JSONPlaceholder, enriquece cada post com detalhes de comentários usando uma chamada de API secundária e envia os dados combinados a um endpoint de webhook. Ao final, você entenderá como usar a fase de Enriquecimento para buscar dados adicionais por datapoint e combiná-los em suas transformações.

## O que você vai construir

Você criará uma integração que:

1. **Extrai** registros de posts do JSONPlaceholder (uma API de teste gratuita)
2. **Enriquece** cada post buscando seus comentários usando uma requisição de API secundária
3. **Transforma** os dados combinando campos de ambas as respostas de extração e enriquecimento
4. **Envia** os resultados enriquecidos para webhook.site onde você pode inspecioná-los

Tempo necessário: aproximadamente 5 minutos.

## Pré-requisitos

* Acesso a um Workspace da RWS Integration
* Um navegador web

## Passo 1: Configure seu destino

Antes de criar a integração, crie um endpoint de destino onde você pode verificar os resultados.

1. Abra [webhook.site](https://webhook.site) em uma nova aba do navegador
2. O site gera automaticamente uma URL única (ex.: `https://webhook.site/abc123-def456-...`)
3. **Copie a parte do caminho único** (ex.: `/abc123-def456-...`), pois você precisará dela ao configurar a fase de Envio
4. Mantenha esta aba aberta para monitorar requisições recebidas

<Note>
  webhook.site é um serviço gratuito que captura e exibe requisições HTTP. É útil para testar integrações antes de conectar a sistemas de destino reais.
</Note>

## Passo 2: Crie a conexão de origem

Conexões definem como a RWS Integration se comunica com sistemas externos. Você criará uma para a API JSONPlaceholder, que será usada tanto para a extração principal quanto para as requisições de enriquecimento.

1. Na barra lateral, clique em **Conexões**
2. Clique em **Nova Conexão**
3. Configure a conexão:

| Campo                        | Valor                                  |
| ---------------------------- | -------------------------------------- |
| Nome                         | `[Doc] Enrichment Extract Connection`  |
| Tipo                         | `API`                                  |
| URL                          | `https://jsonplaceholder.typicode.com` |
| Caminho base (URL base path) | `/`                                    |
| Autenticação                 | `Sem autenticação`                     |

4. Clique em **Salvar**

A API JSONPlaceholder não requer autenticação, então a opção **Sem autenticação**, já selecionada por padrão para novas conexões, é tudo o que você precisa.

## Passo 3: Crie a conexão de destino

Agora crie uma Conexão para seu destino webhook.site.

1. Clique em **Nova Conexão**
2. Configure a conexão:

| Campo                        | Valor                              |
| ---------------------------- | ---------------------------------- |
| Nome                         | `[Doc] Enrichment Load Connection` |
| Tipo                         | `API`                              |
| URL                          | `https://webhook.site`             |
| Caminho base (URL base path) | `/`                                |
| Autenticação                 | `Sem autenticação`                 |

3. Clique em **Salvar**

## Passo 4: Crie a Integração

Com ambas as Conexões prontas, crie a Integração que extrai posts, os enriquece com comentários e envia os dados combinados ao seu destino.

1. Na barra lateral, clique em **Integrações**
2. Clique em **Nova Integração**

### Configurações gerais

Configure as propriedades básicas da integração:

| Campo       | Valor                                          |
| ----------- | ---------------------------------------------- |
| Nome        | `[Doc] Enrichment Integration`                 |
| Versão      | `1.0.0`                                        |
| Tipo        | `Full`                                         |
| Ambiente    | `Staging`                                      |
| Agendamento | Diária, no horário que preferir (ex.: `09:00`) |

### Fase de Extração

A fase de Extração recupera dados de posts do seu sistema de origem.

1. Expanda a seção **Extração**
2. Configure estes campos:

| Campo              | Valor                                 |
| ------------------ | ------------------------------------- |
| Conexão            | `[Doc] Enrichment Extract Connection` |
| Método             | `GET`                                 |
| Caminho (URL path) | `/posts`                              |

3. Defina o **Path para o datapoint na resposta** como `root`

4. Defina a **Paginação**:

| Campo                          | Valor     |
| ------------------------------ | --------- |
| Tipo                           | `Simples` |
| Parâmetro do tamanho da página | `_limit`  |
| Valor do tamanho da página     | `10`      |
| Parâmetro da página            | `_page`   |
| Valor da página inicial        | `1`       |
| Tipo de fim de paginação       | `Objeto`  |

5. Verifique o painel **Preview de Extração** no lado direito. Ele deve mostrar:
   * Status: `200 OK`
   * Um único registro de post (o Datapoint) como este:
   ```json theme={null}
   {
        "userId": 1,
        "id": 1,
        "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
        "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
    }
   ```

### Fase de Enriquecimento

A fase de Enriquecimento busca dados adicionais para cada datapoint extraído na fase de Extração principal. Para cada post, buscaremos seus comentários.

1. Expanda a seção **Enriquecimento**
2. Clique em **Adicionar Enriquecimento**
3. Configure o enriquecimento:

| Campo              | Valor                                 |
| ------------------ | ------------------------------------- |
| Nome               | `comments`                            |
| Conexão            | `[Doc] Enrichment Extract Connection` |
| Método             | `GET`                                 |
| Caminho (URL path) | `/posts/{{ parameterId }}/comments`   |

Configure os parâmetros de query do Enriquecimento:

| Tipo | Para          | Valor fixo |
| ---- | ------------- | ---------- |
| Fixo | `parameterId` | `{{ id }}` |

<Warning>
  O `{{ id }}` é um parâmetro dinâmico que será interpolado de cada datapoint extraído na etapa principal de Extração. Certifique-se de que o nome do campo corresponda exatamente (sensível a maiúsculas/minúsculas).
</Warning>

4. O enriquecimento usará automaticamente o valor `id` extraído do post para fazer uma requisição para `/posts/{id}/comments`.

5. Verifique o painel **Preview de Extração** no lado direito. Ele deve mostrar:
   * Status: `200 OK`
   * Um array de registros de comentários como este:
   ```json theme={null}
   [
    {
        "postId": 1,
        "id": 1,
        "name": "id labore ex et quam laborum",
        "email": "Eliseo@gardner.biz",
        "body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium"
    },
    {
        "postId": 1,
        "id": 2,
        "name": "quo vero reiciendis velit similique earum",
        "email": "Jayne_Kuhic@sydney.com",
        "body": "est natus enim nihil est dolore omnis voluptatem numquam\net omnis occaecati quod ullam at\nvoluptatem error expedita pariatur\nnihil sint nostrum voluptatem reiciendis et"
    },
   ]
   ```

### Fase de Transformação

A fase de Transformação mapeia campos de origem de ambas as respostas de Extração e Enriquecimento para o formato de destino. Para este guia, crie mapeamentos que combinem dados de posts com informações de comentários.

1. Expanda a seção **Transformação**
2. Clique em **Adicionar Transformação** e configure campos da Extração principal:

| Tipo    | Para        | De      |
| ------- | ----------- | ------- |
| Simples | `postId`    | `id`    |
| Simples | `postTitle` | `title` |
| Simples | `postBody`  | `body`  |

3. Clique em **Adicionar Transformação** novamente e configure campos do Enriquecimento:

| Tipo    | Para                | De                  |
| ------- | ------------------- | ------------------- |
| Simples | `firstCommentEmail` | `comments[0].email` |
| Simples | `firstCommentText`  | `comments[0].body`  |

<Warning>
  Para acessar dados de enriquecimento, use o nome do enriquecimento diretamente como início do caminho: `{{ enrichmentName }}.{{ fieldPath }}` (neste caso, `comments`). O nome do enriquecimento deve corresponder exatamente ao que você configurou na seção Enriquecimento.
</Warning>

4. Verifique o painel **Preview de Transformação**. Ele deve exibir:

```json theme={null}
{
  "postId": 1,
  "postTitle": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "postBody": "quia et suscipit...",
  "firstCommentEmail": "Eliseo@gardner.biz",
  "firstCommentText": "laudantium enim quasi est quidem magnam voluptate..."
}
```

Isso confirma que seus mapeamentos estão funcionando corretamente e mostra como os dados de ambas as fases de Extração e Enriquecimento são combinados.

### Fase de Envio

A fase de Envio envia dados transformados para seu destino.

1. Expanda a seção **Envio**
2. Configure estes campos:

| Campo              | Valor                                                         |
| ------------------ | ------------------------------------------------------------- |
| Conexão            | `[Doc] Enrichment Load Connection`                            |
| Método             | `POST`                                                        |
| Caminho (URL path) | Seu caminho único do webhook.site (ex.: `/abc123-def456-...`) |
| Tipo de Envio      | `Simples`                                                     |

<Warning>
  Copie apenas a parte do caminho da sua URL do webhook.site. Se sua URL completa for `https://webhook.site/abc-123`, insira `/abc-123` como o Path.
</Warning>

3. Verifique o painel **Preview de Envio**. Ele mostra a requisição completa que será enviada:
   * **Path**: [https://webhook.site/\{\{](https://webhook.site/\{\{) your-unique-path }}
   * **Method**: POST
   * **Request Body**:

```json theme={null}
{
  "postId": 1,
  "postTitle": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "postBody": "quia et suscipit...",
  "firstCommentEmail": "Eliseo@gardner.biz",
  "firstCommentText": "laudantium enim quasi est quidem magnam voluptate..."
}
```

## Passo 5: Implante a Integração

1. Ative o toggle **Implantação**
2. Clique em **Criar Integração**

A integração agora será executada automaticamente todos os dias no horário que você escolheu.

## Passo 6: Execute agora

Você não precisa esperar o agendamento. Dispare a primeira execução manualmente:

1. Abra sua integração na lista de **Integrações**
2. Clique em **Executar agora**, ao lado do botão **Salvar**
3. Confirme no diálogo: a mensagem **Execução iniciada** aparece

## Passo 7: Verifique os resultados

Mude para a aba do webhook.site no seu navegador. Você deve ver requisições POST recebidas (uma para cada post processado), cada uma contendo sua estrutura de dados transformada com informações combinadas de posts e comentários:

```json theme={null}
{
  "postId": 1,
  "postTitle": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "postBody": "quia et suscipit...",
  "firstCommentEmail": "Eliseo@gardner.biz",
  "firstCommentText": "laudantium enim quasi est quidem magnam voluptate..."
}
```

Parabéns! Você criou e executou sua primeira integração com enrichment!

## O que você aprendeu

* **Conexões** armazenam configurações para sistemas externos e podem ser reutilizadas em múltiplas Integrações
* **Integrações** seguem o padrão Extração → Enriquecimento → Transformação → Envio
* **Painéis de Preview** atualizam automaticamente conforme você configura cada fase, permitindo validar antes de executar
* **Transformações simples** mapeiam campos da origem para o destino usando notação JSONPath
* **Enriquecimento** permite buscar dados adicionais para cada datapoint extraído na fase de Extração principal
* **Parâmetros dinâmicos** (como `{{ id }}`) em caminhos de enriquecimento são interpolados de datapoints extraídos
* **Dados de enriquecimento** são acessados na Transformação pelo nome do enriquecimento: `{{ enrichmentName }}.{{ fieldPath }}`

## Próximos passos

<CardGroup cols={2}>
  <Card title="Conexões" icon="plug" href="/pt-br/features/connections/api">
    Aprenda sobre os diferentes métodos de autenticação
  </Card>

  <Card title="Paginação" icon="arrows-rotate" href="/pt-br/features/extract/pagination">
    Lide com paginação e respostas de API complexas
  </Card>

  <Card title="Regras de Negócio" icon="code" href="/pt-br/features/business-rules/overview">
    Domine transformações de campos com JavaScript
  </Card>

  <Card title="Agendamento" icon="clock" href="/pt-br/features/extract/scheduling">
    Agende suas integrações para executar automaticamente
  </Card>
</CardGroup>
