# Extrair Registros de Emprego (Widget)
> No México? Este guia irá orientá-lo no processo de uso da nossa API para extrair registros de emprego de forma segura e eficiente, permitindo que você verifique o emprego, entenda o histórico de carreira e muito mais.
## Introdução
Neste guia, vamos orientá-lo em tudo o que você precisa para extrair dados de emprego sobre seus usuários usando nosso widget. Isso inclui:
- Uma visão geral do fluxo de dados
- Gerar um token de acesso ao widget e criar um link
- Obter informações do registro de emprego
Empregos Atuais Em Breve!
Este guia menciona atualmente um novo recurso que está em desenvolvimento: **Empregos Atuais**. Este recurso estará disponível nos próximos dias, e atualizaremos este guia assim que estiver pronto. Por enquanto, você só pode extrair **Registros de Emprego**.
## Pré-requisitos
Antes de prosseguir com sua integração, certifique-se de que você leu nosso guia de introdução. No guia de introdução, você criará uma conta Belvo, gerará algumas chaves de API sandbox e configurará uma URL de webhook. Para fins de teste e desenvolvimento de sua integração, recomendamos fortemente o uso do ambiente Sandbox sempre que possível.
## Fluxo geral de dados
Tempo médio para recuperar dados de emprego
O tempo médio que a Belvo leva para recuperar dados de emprego de uma instituição de emprego e enviar um evento de webhook para você é de 15 segundos. No entanto, isso pode variar dependendo da capacidade de resposta da instituição e da carga atual de solicitações.
A Belvo usa *fluxos de trabalho assíncronos* para melhorar o fluxo de dados (veja o diagrama abaixo).
Sempre que você cria um link, a Belvo automaticamente extrai todos os dados de emprego para você em segundo plano, e assim que temos todos os dados, notificamos você via um webhook que os dados estão prontos para serem recuperados. Para que possamos notificá-lo quando os dados estiverem prontos, você precisará fornecer uma URL para onde possamos enviar eventos.
```mermaid
sequenceDiagram
autonumber
participant App as Application
participant Belvo as Belvo
participant EI as Employment Institution
App->>Belvo: POST /token/
fetch_resources =
["EMPLOYMENT_RECORDS", "CURRENT_EMPLOYMENTS"]
Belvo-->>App: 200 - Token Gerado
App->>App: Direcione seu usuário para o Hosted Widget
App->>EI: Usuário faz login na sua instituição
EI-->>Belvo: Belvo recupera informações históricas de emprego para o ID do link
Belvo-->>App: Usuário redirecionado de volta para sua aplicação. Você recebe um ID de link para o usuário.
Note over App,EI: Para cada recurso listado em fetch_resources, você receberá um webhook historical_update.
Belvo->>App: WEBHOOK historical_update (EMPLOYMENT_RECORDS)
App->>Belvo: GET /employment-records/?link={id}
Belvo-->>App: 200 + Detalhes do Registro de Emprego
Belvo->>App: WEBHOOK historical_update (CURRENT_EMPLOYMENTS)
App->>Belvo: GET /current-employments/?link={id}
Belvo-->>App: 200 + Detalhes do Emprego Atual
Note over App,EI: Se estiver usando links recorrentes, na frequência de atualização agendada você receberá um webhook.
Belvo->>App: WEBHOOK new_employment_records_available
App->>Belvo: GET /employment-records/?link={id}
Belvo-->>App: 200 + Detalhes do Registro de Emprego
```
## Gerar um token de acesso
O token de acesso retornado é válido por 10 minutos e invalidamos o token assim que um usuário conecta sua conta com sucesso.
Para que o widget apareça para seus usuários finais, você precisa gerar um token de `access` no seu servidor e enviá-lo para a Belvo. Assim que recebermos a solicitação, você receberá um objeto com duas chaves: access e refresh. Passe o valor da chave access ao iniciar o hosted widget.
Para gerar um token de `access`, basta fazer uma chamada do seu servidor para a Belvo:
Sandbox
```shell Sandbox Request URL
curl -X POST \
https://sandbox.belvo.com/api/token/ \
-H 'Content-Type: application/json' \
-d 'veja o exemplo de payload abaixo'
```
Employments Records Mexico
{
"id": "YOUR_SECRET_ID",
"password": "YOUR_SECRET_PASSWORD",
"scopes": "read_institutions,write_links",
"stale_in": "365d",
"credentials_storage": "store",
"fetch_resources": ["EMPLOYMENT_RECORDS", "CURRENT_EMPLOYMENTS"], // [!code highlight]
"widget": {
"callback_urls": {
"success": "your-url-here://success",
"exit": "your-url-here://exit",
"event": "your-url-here://error"
},
"branding": {
"company_icon": "https://mysite.com/icon.svg",
"company_logo": "https://mysite.com/logo.svg",
"company_name": "ACME",
"company_terms_url": "https://belvo.com/terms-service/"
},
"theme": [] // See our dedicated widget customization article
}
}
Production
```shell Production Request URL
curl -X POST \
https://production.belvo.com/api/token/ \
-H 'Content-Type: application/json' \
-d 'veja o exemplo de payload abaixo'
```
Employments Records Mexico
{
"id": "YOUR_SECRET_ID",
"password": "YOUR_SECRET_PASSWORD",
"scopes": "read_institutions,write_links",
"stale_in": "365d",
"credentials_storage": "store",
"fetch_resources": ["EMPLOYMENT_RECORDS", "CURRENT_EMPLOYMENTS"], // [!code highlight]
"widget": {
"callback_urls": {
"success": "your-url-here://success",
"exit": "your-url-here://exit",
"event": "your-url-here://error"
},
"branding": {
"company_icon": "https://mysite.com/icon.svg",
"company_logo": "https://mysite.com/logo.svg",
"company_name": "ACME",
"company_terms_url": "https://belvo.com/terms-service/"
},
"theme": [] // See our dedicated widget customization article
}
}
| Parâmetro | Tipo | Obrigatório | Descrição | Exemplo |
| --- | --- | --- | --- | --- |
| `id` | string | sim | Substitua `YOUR_SECRET_ID` pelo ID secreto que você gerou no painel da Belvo. |
| `password` | string | sim | Substitua `YOUR_SECRET_PASSWORD` pela senha secreta que você gerou no painel da Belvo. |
| `scopes` | string | sim | O parâmetro `scopes` contém uma lista de permissões que permitem criar um link para o usuário. Este é um parâmetro obrigatório e deve ser enviado exatamente como mostrado. |
| `stale_in` | string | opcional | O parâmetro `stale_in` permite controlar por quanto tempo a Belvo armazena dados derivados do usuário. Para mais informações, confira a seção `stale_in` do nosso artigo sobre controles de retenção de dados. |
| `credentials_storage` | string | opcional | O parâmetro `credentials_storage` permite controlar por quanto tempo a Belvo deve armazenar credenciais para usuários. Se você criar links recorrentes, isso deve ser configurado como `store`. Para mais informações, confira a seção `credentials_storage` do nosso artigo sobre controles de retenção de dados. |
| `fetch_resources` | array de strings | sim | No parâmetro `fetch_resources`, você fornece uma lista de recursos que deseja que a Belvo recupere de forma assíncrona para o usuário. Para dados de registro de emprego no México, você pode enviar `["EMPLOYMENT_RECORDS", "CURRENT_EMPLOYMENTS"]`. **Nota**: `CURRENT_EMPLOYMENTS` não está disponível no ambiente sandbox. |
| `widget.callback_urls` | objeto | sim | No objeto `callback_urls`, você deve adicionar links para onde seu usuário deve ser redirecionado nos seguintes casos:- `success` (seu usuário conectou suas contas com sucesso)
- `exit` (seu usuário saiu do widget antes de completar o processo)
- `event` (ocorreu um erro durante o processo de conexão) Para mais informações, confira a seção callback_urls em nosso guia Hosted Widget (OFDA). A Belvo também enviará informações adicionais sobre o evento, dependendo do evento. Para mais informações, certifique-se de verificar a seção Handling callback events do guia Hosted Widget (OFDA).
|
| `widget.branding`
| objeto
| sim
| No objeto `branding`, você deve adicionar seu:
- `company_icon`
- `company_logo`
- `company_name`
- `company_terms_url`.
Você também pode adicionar opcionalmente uma cor de fundo personalizada para quando o widget abrir, bem como desativar a mensagem da Belvo sobre quantas contas foram conectadas. Para mais informações sobre as opções de branding e personalização do widget, confira nosso guia dedicado.
|
| `widget.theme` | array de objetos | opcional | Você pode opcionalmente adicionar as cores da sua marca ao widget usando o parâmetro `theme`. Para mais informações sobre onde essas cores aparecerão no widget, confira a seção dedicada Adicionar cores personalizadas ao widget do nosso guia de Branding. |
```json Exemplo de Resposta do Token
{
"access": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzI3Mz...", // [!code highlight]
"refresh": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MjM0O...."
}
```
## Inicie o widget em seu aplicativo para seu usuário
Em seguida, você precisará redirecionar seu usuário para o widget em uma webview dentro do seu aplicativo, usando o token `access` que você recebeu da solicitação `/api/token/`:
Sandbox
```curl Hosted Widget URL
https://widget.belvo.io/
?access_token={access_code} # [!code ++]
&locale=mx # [!code ++]
&institutions=planet_mx_employment # [!code warning]
&access_mode=single # [!code warning]
&external_id=HJLSI-897809 # [!code warning]
```
Produção
```curl Hosted Widget URL
https://widget.belvo.io/
?access_token={access_code} # [!code ++]
&locale=mx # [!code ++]
&institutions=imss_mx_employment,issste_mx_employment # [!code warning]
&access_mode=single # [!code warning]
&external_id=HJLSI-897809 # [!code warning]
```
| Parâmetro | Obrigatório | Descrição |
| --- | --- | --- |
| `access_token` | sim | Substitua `access_code` pelo token `access` que você recebeu. |
| `locale` | sim | Para que o hosted widget funcione corretamente para seus usuários no México, você deve definir o parâmetro de consulta locale como `mx`. |
| `institutions` | não | Com o parâmetro `institutions`, você pode fornecer uma (ou mais) instituições que devem ser exibidas no widget. No caso de Registros de Emprego no México, recomendamos definir este parâmetro como `imss_mx_employment,issste_mx_employment`. |
| `access_mode` | não | O tipo de link a ser criado (`single` ou `recurrent`). Para Registros de Emprego no México, recomendamos usar links `single`. Para mais informações sobre o `access_mode` de um link, veja nossa seção dedicada aqui. |
| `external_id`
| altamente recomendado
| Sua referência interna para este usuário. Isso é extremamente útil, pois você pode os dados que a Belvo recupera para este usuário em seu sistema. O `external_id` que você fornecer:
- deve ser um ID único para cada usuário em seu banco de dados.
- deve ter pelo menos três caracteres.
- pode ser composto apenas por letras, números, hífens (`-`) e sublinhados (`_`).
- não pode conter nenhuma informação pessoalmente identificável sobre o usuário (e-mail, nome, número de telefone, número de cartão de crédito, etc.).
|
Além disso, confira nossas seções Iniciando o widget e eventos de callback do nosso guia de Hosted Widget (Multi-Region).
**Concluído**! A Belvo agora se conectará à instituição e validará se o CURP fornecido está correto. Uma vez validado e seu link criado, a Belvo carregará os dados de emprego de forma assíncrona. Enviaremos um webhook assim que tivermos recuperado os dados para o link fornecido, e você poderá então extraí-los com uma solicitação get.
## Aguarde um webhook e obtenha dados de Registro de Emprego
Assim que seu link de emprego (para o México) for criado, recuperamos assincronamente os Registros de Emprego para o link e enviamos o seguinte webhook:
| Código do Webhook | Descrição |
| --- | --- |
| `historical_update` | O número total de Registros de Emprego encontrados para o link. |
No payload do webhook, incluímos o número de Registros de Emprego encontrados para o link.
```json Exemplo de Atualização Histórica de Registros de Emprego
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "EMPLOYMENT_RECORDS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_employment_record_profiles": 1 // O número total de perfis de Registro de Emprego encontrados para o link
}
}
```
Assim que você receber a notificação, poderá obter mais detalhes fazendo a seguinte solicitação:
```shell Solicitação GET de Registros de Emprego
curl --request GET 'https://api.belvo.com/api/employment-records/?link=link_id' \
-u SECRET_ID:SECRET_PASSWORD
```
| Parâmetro de Consulta | Descrição | Exemplo |
| --- | --- | --- |
| `link` | O `link_id` que você recebeu na notificação do webhook. | `2f5d361d-dad6-45d4-a0bf-26d479766067` |
## Aguarde um webhook e obtenha dados de Emprego Atual
Assim que seu link de emprego (para o México) for criado, recuperamos assincronamente os Empregos Atuais para o link e enviamos o seguinte webhook:
| Código do Webhook | Descrição |
| --- | --- |
| `historical_update` | O número total de registros de Emprego Atual encontrados para o link. |
No payload do webhook, incluímos o número de registros de Emprego Atual encontrados para o link.
```json Exemplo de Atualização Histórica de Empregos Atuais
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "CURRENT_EMPLOYMENTS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_current_employments": 1 // O número total de registros de Emprego Atual encontrados para o link
}
}
```
Assim que você receber a notificação, poderá obter mais detalhes fazendo a seguinte solicitação:
```shell Solicitação GET de Empregos Atuais
curl --request GET 'https://api.belvo.com/api/mx/current-employments/?link=link_id' \
-u SECRET_ID:SECRET_PASSWORD
```
| Parâmetro de Consulta | Descrição | Exemplo |
| --- | --- | --- |
| `link` | O `link_id` que você recebeu na notificação do webhook. | `2f5d361d-dad6-45d4-a0bf-26d479766067` |