> 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/midapi-v2/storage.md).

# Armazenamento

O armazenamento guarda as capturas de uma [operação](/docs.facephi-pt-br/api-rest/midapi-v2/operations.md) antes de validá-las. Cada asset é armazenado uma vez, fica associado a um **contexto** dentro da operação, e a partir desse momento é referenciado pela sua chave nos serviços de validação sem voltar a transportar o binário. O percurso completo, desde o Token até a chamada de validação, está em [Fluxo comum](/docs.facephi-pt-br/api-rest/midapi-v2/flujo-comun.md).

#### Modos de asset

Os serviços de validação recebem os assets de duas formas, com a mesma estrutura de requisição. O modo é declarado pelo campo `source`:

| Valor de `source` | Conteúdo dos espaços de asset              |
| ----------------- | ------------------------------------------ |
| `FILE`            | Conteúdo da captura, codificado em Base64. |
| `FILE_KEY`        | Chave de um asset já armazenado.           |

`source` é único por requisição, não por asset: uma requisição não pode combinar conteúdo em linha e referências. Quando a requisição referencia algum asset por chave, o cabeçalho `operation-id` é obrigatório e declara a operação à qual pertencem todas as chaves.

{% hint style="info" %}
**A via recomendada é a referência por chave.** Os serviços de validação de identidade também admitem receber o asset tokenizado em Base64 na própria chamada (`source: FILE`), mas não é a forma recomendada de integrá-los: o conteúdo trafega completo em cada validação, não é reutilizado entre chamadas nem entre serviços, incha a requisição e a aproxima do limite de tamanho permitido, e a captura fica sem a operação que lhe dá rastreabilidade. Armazene cada asset uma vez e, depois, referencie-o pela sua chave (`source: FILE_KEY`).

Os serviços que só admitem conteúdo em linha, listados mais abaixo em [Exceções](#excepciones), ficam fora desta recomendação: neles não há outra forma de enviar o asset.
{% endhint %}

#### Contextos de asset

O **contexto** identifica qual captura é o asset e determina em quais espaços de quais serviços ele pode ser usado. Cada serviço declara, na descrição de seus parâmetros, o contexto que aceita em cada espaço.

| Contexto               | Conteúdo                                              | Formato de `asset.file`                                |
| ---------------------- | ----------------------------------------------------- | ------------------------------------------------------ |
| `TOKEN_FRONT_DOCUMENT` | Frente do Documento de identidade, recortada.         | Token do buffer gerado pelo SDK de captura, em Base64. |
| `TOKEN_BACK_DOCUMENT`  | Verso do Documento de identidade, recortado.          | Token do buffer gerado pelo SDK de captura, em Base64. |
| `TOKEN_FACE_IMAGE`     | Rosto recortado do Documento de identidade.           | Token do buffer gerado pelo SDK de captura, em Base64. |
| `TOKEN_BEST_IMAGE`     | Melhor imagem da captura de selfie.                   | Token do buffer gerado pelo SDK de captura, em Base64. |
| `TOKEN_BIN_IAD`        | Binário da captura de Detecção de Ataques de Injeção. | Binário em Base64.                                     |

O par (operação, contexto) identifica exatamente um asset: um segundo envio do mesmo contexto na mesma operação retorna `409`. Se for necessário repetir uma captura já armazenada, cria-se uma nova operação.

#### Formato da chave

```
{operationId}/{CONTEXTO}

0192a3f4-7b21-7c44-9e1a-3f5b8c2d1e04/TOKEN_FRONT_DOCUMENT
```

É o valor retornado por [Save Asset](/docs.facephi-pt-br/api-rest/midapi-v2/storage/save-asset.md) em `fileKey` e o que retorna [Get File Keys](/docs.facephi-pt-br/api-rest/midapi-v2/operations/get-file-keys.md) em cada entrada de `fileKeys`.

{% hint style="warning" %}
A chave é reenviada exatamente como foi recebida. Não deve ser composta nem interpretada: adicionar o contexto a ela a deixa duplicada e o asset não resolve.
{% endhint %}

#### Limites de uso de um asset

Um asset armazenado tem dois limites de uso:

| Situação                                                                 | Resposta |
| ------------------------------------------------------------------------ | -------- |
| Um asset referenciado contém um conteúdo já processado em outra operação | `409`    |
| Um asset esgotou o número máximo de chamadas nesse Endpoint              | `429`    |

Armazenar novamente a mesma captura sob outra operação não permite validá-la de novo. O orçamento de chamadas é independente por operação, asset e Endpoint; seu valor é acordado na ativação do serviço.

#### Exceções

Os serviços de validação de identidade admitem, por padrão, os dois modos de asset, conteúdo em linha e referência por chave. Estas são as exceções:

| Serviço                                                                                                                                                                                               | Modos admitidos                              |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| [Form OCR](/docs.facephi-pt-br/api-rest/midapi-v2/document-services/form-ocr.md)                                                                                                                      | Apenas `FILE`                                |
| [Voice Enrollment](/docs.facephi-pt-br/api-rest/midapi-v2/voice-services/voice-enrollment.md) e [Voice Authentication](/docs.facephi-pt-br/api-rest/midapi-v2/voice-services/voice-authentication.md) | Apenas conteúdo em linha, sem campo `source` |
| [Document Validation](/docs.facephi-pt-br/api-rest/midapi-v2/document-services/document-validation/iniciar-validacion.md)                                                                             | Apenas referência, sem campo `source`        |

Nos serviços exclusivamente em linha o conteúdo é enviado na própria chamada e não trazem cabeçalho `operation-id`.

#### Serviços disponíveis

* [**Save Asset**](/docs.facephi-pt-br/api-rest/midapi-v2/storage/save-asset.md): Armazena um asset em um contexto de uma operação e devolve sua chave.
