> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-pt-br/api-rest/identity-api/identity-api-reference/onboarding/ocr/extract-document-data-web.md).

# Extrair dados do documento Web

Este serviço retorna todos os dados extraídos de um documento de identificação aplicando OCR ao código MRZ, PDF, código de barras e campos visíveis em outras áreas do documento, de acordo com o modelo definido para cada país. Para passaportes, o OCR é aplicado exclusivamente ao código MRZ devido ao seu formato padronizado.

### Integração

Este serviço é usado para implementações do **Widget SelphID Web** ou para o envio de imagens abertas a partir de qualquer plataforma. Ao usar o Widget SelphID Web, as imagens geradas pelo Widget são obtidas de um array de imagens.

### Endpoint

```
POST /services/extractDocumentDataWeb
```

### Headers

| Nome          | Tipo   | Obrigatório | Descrição                                                     |
| ------------- | ------ | ----------- | ------------------------------------------------------------- |
| **x-api-key** | string | **Sim**     | API Key de autorização de acesso.                             |
| **family**    | string | Não         | Valor: **Onboarding**. Obrigatório com o serviço de Tracking. |

{% hint style="info" %}
Todas as chamadas aos Endpoint para Tracking com **Identity Platform** devem conter o header `family`.
{% endhint %}

### Corpo da solicitação

**Content-Type:** `application/json`

#### Parâmetros

| Parâmetro              | Tipo    | Obrigatório | Descrição                                                                                                                                                                                                                                                                                                                                |
| ---------------------- | ------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tokenFrontDocument`   | string  | **Sim**     | Imagem codificada em **Base64** do lado frontal do documento, removendo o cabeçalho do tipo MIME.                                                                                                                                                                                                                                        |
| `tokenBackDocument`    | string  | Não         | Imagem codificada em **Base64** do lado posterior do documento, removendo o cabeçalho do tipo MIME.                                                                                                                                                                                                                                      |
| `countryCode`          | string  | **Sim**     | Código do país no formato [**ISO 3166-1 alpha-3**](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3). Se não estiver presente no corpo da solicitação, o serviço usará o país padrão definido para o cliente na configuração da API. Para passaportes, é necessário apenas `tokenFrontDocument` com `countryCode` definido em **"PSP"**. |
| `decompose`            | boolean | Não         | Indica se deve ser obtida a imagem do rosto presente no documento e o recorte da assinatura. (\*) Consulte a equipe de Suporte Latam para os países habilitados.                                                                                                                                                                         |
| `tracking`             | object  | Não         | Objeto que representa a informação de Tracking necessária.                                                                                                                                                                                                                                                                               |
| `tracking.extraData`   | string  | Não         | Token gerado pelo SDK Mobile/Web. Contém informações de Tracking tokenizadas com a Plataforma.                                                                                                                                                                                                                                           |
| `tracking.operationId` | string  | Não         | Identificador de operação gerado pelo SDK Mobile/Web.                                                                                                                                                                                                                                                                                    |

#### Exemplo de solicitação

```json
{
  "tokenFrontDocument": "BAMBAQLNHJoWGPjfeuDIzDXdZuP...",
  "tokenBackDocument": "BAMBAQLNHJoWGPjfeuDIzDXdZuP...",
  "countryCode": "ECU",
  "decompose": false,
  "tracking": {
    "extraData": "BQABAQG2gBNjuHN4kLmPqYf7R...",
    "operationId": "123e4567-e89b-12d3-a456-426614174000"
  }
}
```

### Respostas

#### `200` Sucesso

#### Parâmetros de resposta

| Parâmetro              | Tipo    | Descrição                                                                                                                                                              |
| ---------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serviceResultCode`    | integer | Código que indica o **resultado geral** da execução do serviço. Ver [Código do resultado do serviço](#service-result-code)                                             |
| `serviceResultLog`     | string  | Campo descritivo do resultado da execução do serviço. São incluídos detalhes do módulo em caso de erro ou exceção.                                                     |
| `serviceTime`          | string  | Tempo total de execução do serviço **(milissegundos)**.                                                                                                                |
| `serviceDocument`      | string  | Objeto que representa o documento capturado. Suas propriedades são **todos os campos extraídos pelo processo OCR**, incluindo a imagem do rosto presente no documento. |
| `serviceTransactionId` | string  | Identificador de transação associado à solicitação processada pela API.                                                                                                |

#### Código do resultado do serviço

O `serviceResultCode` indica o resultado geral da execução do serviço:

| serviceResultCode | Descrição                                                                              | Código HTTP |
| ----------------- | -------------------------------------------------------------------------------------- | ----------- |
| 0                 | A execução do serviço foi bem-sucedida, o módulo processou a solicitação corretamente. | 200         |

#### Exemplo de resposta

```json
{
  "serviceResultCode": 0,
  "serviceResultLog": "Service request successfully processed",
  "serviceTime": "2237",
  "serviceDocument": "{\"ASK4BACK\":\"NO\",\"BACKSIDE\":{\"FIELD_DATA\":{\"BARCODES\":[{\"DATA\":\"\",\"TYPE\":\"\"}]},\"MRZ_DATA\":{\"BIRTH_DATE\":\"01/01/1980\",\"EXPEDITION_DATE\":\"01/01/2020\",\"EXPIRATION_DATE\":\"01/01/2030\",\"IDENTITY_NUMBER\":\"123\",\"ISSUING_COUNTRY\":\"XYZ\",\"NAME\":\"JOHN\",\"NATIONALITY\":\"XYZ\",\"PERSONAL_NUMBER\":\"12345678\",\"SERIAL_NUMBER\":\"000000001\",\"SURNAME\":\"DOE\"}},\"CHECKS\":{\"BIRTH_DATE_SIDE_MATCH\":true,\"EXPEDITION_DATE_SIDE_MATCH\":true,\"EXPIRATION_DATE_SIDE_MATCH\":true,\"NAME_SIDE_MATCH\":true,\"NATIONALITY_SIDE_MATCH\":true,\"SURNAME_SIDE_MATCH\":true},\"COUNTRY_CODE\":\"XYZ\",\"DECOMPOSED\":{\"FACE\":\"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/p3Vg7fMCvXH/66ujh6VJXhFfkzHE4rEYqV6kmz/9k=...\"},\"DOC_MODEL\":\"NEW\",\"FRONTSIDE\":{\"FIELD_DATA\":{\"BIRTH_DATE\":\"01/01/1980\",\"BIRTH_PLACE\":\"SOMEPLACE/XYZ\",\"DOCUMENT_NUMBER\":\"1.234.567-8\",\"EXPEDITION_DATE\":\"01/01/2020\",\"EXPIRATION_DATE\":\"01/01/2030\",\"NAME\":\"JOHN\",\"NATIONALITY\":\"XYZ\",\"SURNAME\":\"DOE\"}},\"SCORING\":{\"BACK_CONFIDENCE\":0.927620202303,\"BACK_SHA256\":\"0f8b53d5724a186cf19c882baa20eb92fa6e1708065987a32ecbf0141a86e6a5\",\"FIELDS_RETURNED\":27,\"FIELDS_TOTAL\":27,\"FRONT_CONFIDENCE\":0.97401304245,\"FRONT_SHA256\":\"a3dccd459f4674ec8440a11c7c65ab0e1ebaa5fd8357b55484574e71116bef2c\",\"OVERALL_RATING\":100.0}}",
  "serviceTransactionId": "123e4567-e89b-12d3-a456-426614174000"
}
```

#### `400` Solicitação inválida

```json
{
  "status": 400,
  "title": "Bad Request",
  "detail": "Invalid request.",
  "type": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
  "errors": []
}
```

#### `401` Não autorizado

```json
{
  "message": "Unauthorized"
}
```

#### `403` Proibido

```json
{
  "Message": "User is not authorized to access this resource with an explicit deny"
}
```

#### `502` Gateway inválido

```json
{
  "status": 502,
  "title": "Bad Gateway",
  "detail": "Server got an invalid response.",
  "type": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502"
}
```

#### `504` Gateway Timeout

```json
{
  "message": "Endpoint request timed out"
}
```
