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

# Executar Enriquecimento por ID Externo

> Execute integrações de enriquecimento do marketplace em uma entidade usando seu identificador externo. Consulte o esquema do request, códigos de resposta.

## Visão Geral

Executa uma ou mais integrações de enriquecimento do marketplace em uma entidade específica usando seu identificador externo. Este endpoint primeiro busca a entidade pelo seu externalId, depois executa os enriquecimentos. É idêntico ao endpoint por ID, mas mais conveniente quando você usa seus próprios identificadores de entidade.

**Nota:** `enrichmentGroupRefs` vale apenas para esta API de execução do marketplace (e para `POST .../marketplace/enrichment` por UUID da entidade). A **criação de entidades** (manual ou automática) ainda usa apenas códigos explícitos, não slugs de grupo.

## Endpoint

```
POST http://api.gu1.ai/integration-execution/marketplace/enrichment-by-external-id
```

## Autenticação

Requer uma chave API válida no cabeçalho de autorização:

```bash theme={null}
Authorization: Bearer YOUR_API_KEY
```

## Corpo da Solicitação

<ParamField body="externalId" type="string" required>
  Seu identificador externo para a entidade (por exemplo, seu ID de cliente, ID de usuário, etc.)
</ParamField>

<ParamField body="integrationCodes" type="array<string>">
  Lista explícita de códigos de integração de enriquecimento a executar. Veja [Códigos de Provedores de Integração](/pt/api-reference/integrations/provider-codes).

  Você pode enviar **apenas `integrationCodes`**, **apenas `enrichmentGroupRefs`** ou **ambos**. Se ambos forem enviados, a API expande os grupos em códigos, concatena `integrationCodes` e **remove duplicatas** preservando a ordem da primeira ocorrência. Pelo menos um entre `integrationCodes` ou `enrichmentGroupRefs` deve ser não vazio.
</ParamField>

<ParamField body="enrichmentGroupRefs" type="array<string>">
  Referências a **grupos de enriquecimento** configurados para sua organização no Marketplace. Cada valor é o **slug do grupo** ou o **UUID do grupo**. O servidor substitui cada referência pelos códigos salvos naquele grupo (em ordem) e depois mescla os `integrationCodes`. Cada código permanece sujeito às mesmas regras do orquestrador que em uma requisição direta (tipo de catálogo, habilitação na org, bloqueios, etc.).
</ParamField>

<ParamField body="parameters" type="object">
  Parâmetros adicionais opcionais para passar às integrações
</ParamField>

## Resposta

<ResponseField name="success" type="boolean">
  Se a operação de enriquecimento em lote foi concluída com sucesso
</ResponseField>

<ResponseField name="entityId" type="string">
  O UUID interno resolvido da entidade enriquecida
</ResponseField>

<ResponseField name="externalId" type="string">
  O ID externo que foi usado para buscar a entidade
</ResponseField>

<ResponseField name="results" type="array">
  Array de resultados de enriquecimento, um para cada código de integração

  Cada resultado contém:

  * `success` (boolean) - Se este enriquecimento específico foi bem-sucedido
  * `enrichmentId` (string) - UUID do registro de execução do enriquecimento
  * `integrationCode` (string) - O código de integração que foi executado
  * `integrationName` (string) - Nome legível da integração
  * `result` (object) - Dados de enriquecimento (somente se bem-sucedido)
    * `fieldsEnriched` (array) - Lista de campos da entidade que foram enriquecidos
    * `dataQuality` (object) - Métricas de qualidade
      * `completeness` (number) - Pontuação de completude dos dados (0-1)
      * `confidence` (number) - Pontuação de confiança (0-1)
    * `summary` (string) - Resumo legível
    * `enrichmentData` (object) - Os dados de enriquecimento reais
  * `executionTime` (number) - Tempo de execução em milissegundos
  * `costCents` (number) - Custo deste enriquecimento em centavos
  * `error` (object) - Detalhes do erro (somente se falhou)
    * `code` (string) - Código de erro
    * `message` (string) - Mensagem de erro
</ResponseField>

<ResponseField name="totalCostCents" type="number">
  Custo total de todos os enriquecimentos em centavos
</ResponseField>

<ResponseField name="totalExecutionTime" type="number">
  Tempo total de execução para todos os enriquecimentos em milissegundos
</ResponseField>

## Exemplos

### Executar um Único Enriquecimento

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST http://api.gu1.ai/integration-execution/marketplace/enrichment \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "externalId": "customer_12345",
      "integrationCodes": ["ar_repet_enrichment"]
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'http://api.gu1.ai/integration-execution/marketplace/enrichment',
    {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        externalId: 'customer_12345',
        integrationCodes: ['ar_repet_enrichment']
      })
    }
  );

  const result = await response.json();
  console.log(result);
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'http://api.gu1.ai/integration-execution/marketplace/enrichment',
      headers={
          'Authorization': 'Bearer YOUR_API_KEY',
          'Content-Type': 'application/json'
      },
      json={
          'externalId': 'customer_12345',
          'integrationCodes': ['ar_repet_enrichment']
      }
  )

  result = response.json()
  print(result)
  ```
</CodeGroup>

### Executar Múltiplos Enriquecimentos (Lote)

```bash theme={null}
curl -X POST http://api.gu1.ai/integration-execution/marketplace/enrichment \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "customer_12345",
    "integrationCodes": [
      "ar_repet_enrichment",
      "ar_bcra_enrichment",
      "ar_nosis_enrichment"
    ]
  }'
```

### Exemplo de Resposta - Enriquecimento Bem-Sucedido

```json theme={null}
{
  "success": true,
  "entityId": "550e8400-e29b-41d4-a716-446655440000",
  "externalId": "customer_12345",
  "results": [
    {
      "success": true,
      "enrichmentId": "enr_abc123def456",
      "integrationCode": "ar_repet_enrichment",
      "integrationName": "Argentina REPET Person Data",
      "result": {
        "fieldsEnriched": [
          "name",
          "taxId",
          "address",
          "legalStatus"
        ],
        "dataQuality": {
          "completeness": 0.95,
          "confidence": 0.92
        },
        "summary": "Successfully enriched person data from REPET",
        "enrichmentData": {
          "name": "María González",
          "taxId": "20-12345678-9",
          "address": {
            "street": "Av. Corrientes 1234",
            "city": "Buenos Aires",
            "province": "CABA",
            "country": "AR"
          },
          "legalStatus": "active"
        }
      },
      "executionTime": 1250,
      "costCents": 50
    }
  ],
  "totalCostCents": 50,
  "totalExecutionTime": 1250
}
```

### Exemplo de Resposta - Lote com Resultados Mistos

```json theme={null}
{
  "success": true,
  "entityId": "550e8400-e29b-41d4-a716-446655440000",
  "externalId": "customer_12345",
  "results": [
    {
      "success": true,
      "enrichmentId": "enr_abc123",
      "integrationCode": "ar_repet_enrichment",
      "integrationName": "Argentina REPET Person Data",
      "result": {
        "fieldsEnriched": ["name", "taxId"],
        "dataQuality": {
          "completeness": 0.85,
          "confidence": 0.90
        },
        "summary": "Data enriched successfully",
        "enrichmentData": {
          "name": "María González",
          "taxId": "20-12345678-9"
        }
      },
      "executionTime": 1200,
      "costCents": 50
    },
    {
      "success": false,
      "integrationCode": "ar_bcra_enrichment",
      "integrationName": "Argentina BCRA Financial Data",
      "executionTime": 800,
      "costCents": 0,
      "error": {
        "code": "NO_DATA_FOUND",
        "message": "No financial data found for this entity"
      }
    },
    {
      "success": true,
      "enrichmentId": "enr_xyz789",
      "integrationCode": "ar_nosis_enrichment",
      "integrationName": "Argentina Nosis Credit Report",
      "result": {
        "fieldsEnriched": ["creditScore", "riskLevel"],
        "dataQuality": {
          "completeness": 1.0,
          "confidence": 0.95
        },
        "summary": "Credit report retrieved",
        "enrichmentData": {
          "creditScore": 720,
          "riskLevel": "low"
        }
      },
      "executionTime": 1500,
      "costCents": 75
    }
  ],
  "totalCostCents": 125,
  "totalExecutionTime": 3500
}
```

## Respostas de Erro

### 404 Entidade Não Encontrada

```json theme={null}
{
  "success": false,
  "results": [],
  "totalCostCents": 0,
  "totalExecutionTime": 0,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "Entity not found"
  }
}
```

### 401 Não Autorizado

```json theme={null}
{
  "success": false,
  "error": {
    "code": "MISSING_ORGANIZATION",
    "message": "Organization ID is required"
  }
}
```

### 400 Solicitação Incorreta

```json theme={null}
{
  "success": false,
  "results": [],
  "totalCostCents": 0,
  "totalExecutionTime": 0,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "At least one integration code is required"
  }
}
```

## Casos de Uso

### Enriquecimento de Dados KYC

Enriquecer uma entidade de pessoa com dados oficiais do governo:

```javascript theme={null}
const enrichmentResult = await fetch(
  'http://api.gu1.ai/integration-execution/marketplace/enrichment',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      entityId: customerId,
      integrationCodes: [
        'ar_repet_enrichment',  // Official identity data
        'ar_renaper_enrichment' // National registry
      ]
    })
  }
).then(res => res.json());

if (enrichmentResult.success) {
  console.log('Customer data enriched');
  console.log('Total cost:', enrichmentResult.totalCostCents / 100, 'USD');

  // Check each enrichment result
  enrichmentResult.results.forEach(result => {
    if (result.success) {
      console.log(`✓ ${result.integrationName} completed`);
    } else {
      console.log(`✗ ${result.integrationName} failed: ${result.error?.message}`);
    }
  });
}
```

### Devida Diligência de Empresa

Coletar dados completos da empresa de múltiplas fontes:

```python theme={null}
enrichment_data = requests.post(
    'http://api.gu1.ai/integration-execution/marketplace/enrichment',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={
        'entityId': company_id,
        'integrationCodes': [
            'ar_afip_enrichment',      # Tax authority data
            'ar_bcra_enrichment',      # Central bank data
            'ar_commercial_registry'    # Commercial registry
        ]
    }
).json()

# Process successful enrichments
successful = [r for r in enrichment_data['results'] if r['success']]
failed = [r for r in enrichment_data['results'] if not r['success']]

print(f"Completed: {len(successful)}/{len(enrichment_data['results'])}")
print(f"Total cost: ${enrichment_data['totalCostCents'] / 100:.2f}")
```

## Notas Importantes

* **Execução em Lote**: Múltiplos enriquecimentos são executados em paralelo para melhor desempenho
* **Rastreamento de Custos**: O custo de cada enriquecimento é rastreado individualmente e somado em `totalCostCents`
* **Sucesso Parcial**: O lote pode ter sucesso mesmo que alguns enriquecimentos individuais falhem
* **Auditoria Automática**: Todos os enriquecimentos são automaticamente registrados no rastro de auditoria
* **Acionamento de Regras**: Enriquecimentos bem-sucedidos acionam o mecanismo de regras com o evento `enrichment_completed`
* **Idempotência**: Executar o mesmo enriquecimento várias vezes pode retornar resultados em cache, a menos que `forceRefresh` seja usado

## Endpoints Relacionados

* [Executar Enriquecimento por ID Externo](/pt/api-reference/enrichment/execute-by-external-id) - Use seu próprio identificador de entidade
* [Obter Entidade](/pt/api-reference/entities/get) - Visualizar dados de entidade enriquecida
* [Listar Provedores de Integração](/pt/api-reference/integrations/provider-codes) - Códigos de enriquecimento disponíveis
