> 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/flujo-comun.md).

# Fluxo comum

Os serviços de validação que trabalham **por referência** compartilham o mesmo início: obter o Token, dispor de uma operação e enviar os assets para o armazenamento. Só depois o serviço concreto é invocado com as chaves obtidas.

Esta página reúne esse início para não repeti-lo em cada serviço. Cada etapa aponta para a página que documenta seu contrato.

### Diagrama

```mermaid
sequenceDiagram
    actor C as Consumer
    participant API as MIDAPI v2

    C->>API: POST /consumer/token
    API-->>C: Token de consumer (validade 1 h)

    C->>API: POST /operation
    API-->>C: operationId + expiresAt

    loop Por cada asset: frente, verso, selfie
        C->>API: POST /storage (conteúdo + contexto)
        API-->>C: fileKey
    end

    C->>API: Serviço de validação (fileKeys + operation-id)
    API-->>C: Resultado do serviço
```

### As etapas

1. **Obter o Token de consumer.** Um único Token autentica todas as chamadas seguintes e vale uma hora. Ele é emitido em nome da plataforma e para um consumer específico. Ver [Autenticação](/docs.facephi-pt-br/api-rest/midapi-v2/autenticacion.md).
2. **Criar a operação.** A operação agrupa os assets da sessão e define uma expiração para eles. Ela é criada com `POST /operation`que devolve o `operationId` e seu `expiresAt`. Convém criá-la **quando a captura começa**, e não antes, porque o relógio da expiração começa nesse momento. Ver [Create Operation](/docs.facephi-pt-br/api-rest/midapi-v2/operations/create-operation.md).
3. **Enviar cada asset.** Uma chamada por captura, declarando o **contexto** correspondente. Cada envio devolve a `fileKey` com a qual depois se referencia o asset. Ver [Save Asset](/docs.facephi-pt-br/api-rest/midapi-v2/storage/save-asset.md), e [Armazenamento](/docs.facephi-pt-br/api-rest/midapi-v2/storage.md) para os contextos disponíveis e o formato da chave.
4. **Invocar o serviço de validação.** São enviadas as `fileKeys` **tal como as devolveu** `POST /storage`, com o `operationId` no cabeçalho `operation-id`. A chave não é composta nem interpretada: adicionar o contexto por conta própria a deixa duplicada e o asset não é resolvido. Se precisar recuperar as chaves de uma operação, elas estão em [Get File Keys](/docs.facephi-pt-br/api-rest/midapi-v2/operations/get-file-keys.md).

### Quais serviços seguem este Fluxo

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, e este Fluxo é o do modo por referência. As exceções são explícitas:

| Serviço                                                                                                                                                                                               | Modos admitidos                               |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- |
| [Form OCR](/docs.facephi-pt-br/api-rest/midapi-v2/document-services/form-ocr.md)                                                                                                                      | Somente conteúdo em linha                     |
| [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) | Somente conteúdo em linha, sem campo `source` |
| [Document Validation](/docs.facephi-pt-br/api-rest/midapi-v2/document-services/document-validation.md)                                                                                                | Somente referência, sem campo `source`        |

Os serviços exclusivamente on-line não passam pelas etapas 2 e 3: o conteúdo viaja na própria chamada e não levam cabeçalho `operation-id`.
