> ## 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.

# Extrair dados ao vivo com o RWS Connect Live

> Aprenda como ler seu sistema SOAP em tempo real e usar o resultado como qualquer outra fonte de API

As tabelas do [RWS Connect](/pt-br/core-concepts/rws-connect) entregam uma cópia organizada e armazenada dos dados do seu sistema legado, atualizada em um agendamento. O **RWS Connect Live** responde uma pergunta diferente: *o que o meu sistema diz agora?* Uma chamada REST entra, uma chamada SOAP chega ao seu sistema naquele exato momento, e um JSON limpo volta — sem tabelas, sem esperar a próxima atualização.

Isso faz do Live a ferramenta certa para **monitoramento**: uma integração que confere, a cada hora, se toda admissão realmente chegou na sua plataforma de RH não pode trabalhar com o snapshot de ontem. Também é a ferramenta certa para qualquer integração que precise do estado atual da fonte, e não da última extração.

## O que você vai construir

Você vai configurar a extração de uma integração que lê as admissões do último mês **ao vivo** de um sistema de folha SOAP, recebendo-as como registros JSON prontos para transformações, filtros e envios como qualquer outra fonte de API.

Tempo necessário: aproximadamente 10 minutos.

## Pré-requisitos

* Acesso a um RWS Integration Workspace
* RWS Connect Live habilitado para sua conta, com a `x-api-key` fornecida pela RWS
* As credenciais do seu sistema armazenadas com a RWS, e o endereço dele aprovado para sua conta (para configurar, envie um email para [connect@rwsintegration.com](mailto:connect@rwsintegration.com))
* A operação SOAP que você quer chamar: endereço, action e XML de requisição (da documentação do seu sistema, ou pergunte à RWS)

Os exemplos usam um sistema de folha fictício em `https://folha.exemplo.com.br`. Substitua os endereços, o XML e as credenciais pelos do seu sistema.

## Passo 1: Crie a Conexão

Você só faz isso uma vez. A mesma Conexão serve para **todas** as integrações Live que você vier a construir — qual sistema e qual operação chamar são escolhidos depois, por integração.

1. Na barra lateral, clique em **Connections**
2. Clique em **New Connection**
3. Configure a conexão:

| Campo                        | Valor                                   |
| ---------------------------- | --------------------------------------- |
| Nome                         | `RWS Connect Live`                      |
| Tipo                         | `API`                                   |
| URL                          | `https://connect.rwsintegration.com`    |
| Caminho base (URL base path) | `/v1/live/soap`                         |
| Autenticação                 | `Simple`                                |
| Headers                      | `x-api-key`: a chave fornecida pela RWS |

4. Clique em **Save**

## Passo 2: Configure a Extração

Tudo sobre a chamada SOAP viaja como query parameters, então fica tudo em um lugar só: a configuração de extração da sua integração.

1. Na sua integração, expanda a seção **Extract**
2. Configure estes campos:

| Campo              | Valor              |
| ------------------ | ------------------ |
| Conexão            | `RWS Connect Live` |
| Método             | `GET`              |
| Caminho (URL path) | `/`                |

3. Adicione os **Query Params** que descrevem a chamada. Primeiro, qual operação chamar:

| Parâmetro            | Valor                                                                        |
| -------------------- | ---------------------------------------------------------------------------- |
| `x_soap_host`        | `https://folha.exemplo.com.br`                                               |
| `x_soap_path`        | `/v2/servicodecontratodetrabalho`                                            |
| `x_soap_action`      | `exemplo.com.br/api/v2/ServicoDeContratoDeTrabalho/ConsultarListaPorDemanda` |
| `x_soap_auth_header` | o bloco de login do seu sistema — veja abaixo                                |
| `x_body_template`    | o XML de requisição da operação — veja abaixo                                |

O `x_soap_auth_header` é o bloco de autenticação que o seu sistema espera, exatamente como aparece em uma requisição SOAP que funciona — com uma diferença: as credenciais são referenciadas **por nome**, nunca escritas:

```xml theme={null}
<soapenv:Header xmlns:dto="folha.exemplo.com.br/svc/dto">
  <dto:Autenticacao>
    <dto:TokenUsuario>
      <dto:Senha>{FOLHA_SENHA}</dto:Senha>
      <dto:Usuario>{FOLHA_USUARIO}</dto:Usuario>
      <dto:GuidTenant>SEU-GUID-DO-TENANT</dto:GuidTenant>
    </dto:TokenUsuario>
  </dto:Autenticacao>
</soapenv:Header>
```

<Info>
  Nomes como `{FOLHA_USUARIO}` são preenchidos pela RWS no momento da chamada, a partir das credenciais armazenadas com segurança para a sua conta — as mesmas que seus pipelines do Connect usam. Senhas nunca aparecem na sua configuração e nunca viajam na requisição.
</Info>

O `x_body_template` é o XML de requisição da operação, com `{slots}` onde os valores mudam a cada execução:

```xml theme={null}
<v2:ConsultarListaPorDemanda xmlns:v2="folha.exemplo.com.br/api/v2">
  <v2:filtro>
    <v2:PaginaAtual>{pagina}</v2:PaginaAtual>
    <v2:CodigoDaEmpresa>{codigo_empresa}</v2:CodigoDaEmpresa>
    <v2:AdmitidosDesde>{data_inicio}</v2:AdmitidosDesde>
  </v2:filtro>
</v2:ConsultarListaPorDemanda>
```

4. Agora adicione os parâmetros que preenchem esses slots — query params comuns, com os mesmos nomes:

| Parâmetro        | Valor                                             |
| ---------------- | ------------------------------------------------- |
| `codigo_empresa` | `2`                                               |
| `data_inicio`    | `{{ today.subtract(30.day).format(YYYY-MM-DD) }}` |
| `x_record_tag`   | `ContratoDeTrabalho`                              |

O `x_record_tag` nomeia o elemento XML que vira seus registros: cada `<ContratoDeTrabalho>` da resposta se transforma em um item JSON. [Parâmetros dinâmicos](/pt-br/features/extract/dynamic-parameters) como `today.subtract(30.day)` funcionam aqui como em qualquer lugar.

5. Defina o **Datapoint Path in Response** como `items`

6. Configure a **Paginação**:

| Campo                       | Valor    |
| --------------------------- | -------- |
| Tipo de paginação           | `Simple` |
| Parâmetro da página inicial | `pagina` |
| Valor da página inicial     | `1`      |
| Tipo de fim de paginação    | `Object` |

O parâmetro `pagina` preenche o slot `{pagina}` do template, e a extração para sozinha na primeira página vazia.

## Passo 3: Confira o preview

O painel **Extract Preview** deve mostrar status `200 OK` e seus registros como JSON limpo — nomes em `snake_case`, aninhados do jeito que o seu sistema estrutura, todos os valores como texto:

```json theme={null}
{
  "items": [
    {
      "matricula": "202060",
      "data_admissao": "2026-08-03T00:00:00",
      "pessoa": {
        "pessoa_id": "584210",
        "nome": "Ana Souza",
        "cpf": "000.000.000-00"
      },
      "empresa": { "codigo": "2", "descricao": "Exemplo Matriz" }
    },
    {
      "matricula": "202061",
      "data_admissao": "2026-08-04T00:00:00",
      "pessoa": {
        "pessoa_id": "584211",
        "nome": "Bruno Lima",
        "cpf": "000.000.000-00"
      },
      "empresa": { "codigo": "2", "descricao": "Exemplo Matriz" }
    }
  ]
}
```

Daqui em diante é uma integração normal: [transforme](/pt-br/core-concepts/data-mapping), [filtre](/pt-br/core-concepts/data-filtering), [enriqueça](/pt-br/features/extract/enrichment) e envie como de costume.

## Guardas de qualidade opcionais

Quatro parâmetros extras protegem a chamada contra surpresas na resposta. Todos opcionais, todos de uma linha:

| Parâmetro      | O que ele resolve                                                                                                                                          |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `x_list_paths` | Um elemento que *pode* se repetir deve sempre chegar como lista, mesmo quando só há um — declare o caminho dele aqui e ele vai                             |
| `x_explode`    | Transforma um registro em um item por elemento de uma lista interna — um item por período de férias, por exemplo                                           |
| `x_error_tag`  | Alguns sistemas reportam erros dentro de uma resposta de aparência normal. Nomeie o elemento de erro e a chamada falha com clareza em vez de parecer vazia |
| `x_expect_tag` | Um elemento que toda resposta válida deve conter. Se ele faltar, a chamada falha em vez de retornar zero registros silenciosamente                         |

## Live ou tabelas?

| Você precisa de                                                                        | Use                                                        |
| -------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| O estado atual, agora — monitoramento, auditorias, verificações em tempo real          | **RWS Connect Live**                                       |
| Histórico, snapshots ao longo do tempo, análises, dados combinados de várias operações | [Tabelas do RWS Connect](/pt-br/core-concepts/rws-connect) |

Os dois compartilham a mesma api key e se complementam: muitos clientes alimentam dashboards com as tabelas e rodam o [monitoramento](/pt-br/core-concepts/monitoring) no Live.

## Quando algo dá errado

O Live falha com clareza e diz o porquê. Uma chave não habilitada recebe um `403` claro pedindo para falar com a RWS. Uma chamada mal configurada recebe um `400` nomeando exatamente o parâmetro a corrigir. E se o seu sistema retornar um erro — mesmo um disfarçado dentro de uma resposta normal — você recebe um erro claro, nunca um sucesso vazio silencioso.

## O que você aprendeu

* **Uma Conexão, todas as integrações**: sistema, operação e XML são query parameters, então uma única conexão `RWS Connect Live` serve para tudo
* **As credenciais ficam com a RWS**: os templates referenciam nomes como `{FOLHA_USUARIO}`; os valores são preenchidos com segurança no momento da chamada
* **O `x_record_tag` transforma XML em registros**, entregues como JSON aninhado em `snake_case` dentro de `items`
* **A paginação simplesmente funciona**: o parâmetro de página preenche um `{slot}` e a extração para na primeira página vazia

## Próximos passos

<CardGroup cols={2}>
  <Card title="Monitoramento" icon="chart-line" href="/pt-br/core-concepts/monitoring">
    Acompanhe suas integrações e fluxos de negócio
  </Card>

  <Card title="Parâmetros Dinâmicos" icon="brackets-curly" href="/pt-br/features/extract/dynamic-parameters">
    Janelas de data como "os últimos 30 dias"
  </Card>

  <Card title="RWS Connect" icon="plug-circle-bolt" href="/pt-br/core-concepts/rws-connect">
    Seus dados legados como tabelas armazenadas e consultáveis
  </Card>

  <Card title="Enriquecimento" icon="layer-group" href="/pt-br/features/extract/enrichment">
    Complete cada registro com dados de outras APIs
  </Card>
</CardGroup>
