> For the complete documentation index, see [llms.txt](https://docs.caf.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caf.io/caf-api/caf-api-pt-br/mobile-api-obsoleto/response-signature.md).

# Assinatura da resposta (obsoleto)

## **O que é isso?**

A assinatura de resposta é um recurso introduzido para garantir a veracidade das informações recebidas da nossa API quando elas precisam ser transmitidas por um dispositivo que você não controla (como o celular do seu cliente, por exemplo).

## **Quando usar?**

A funcionalidade de assinar requisições é opcional e, se você estiver integrando diretamente no seu backend, não há necessidade de usá-la.

No entanto, se você pretende fazer requisições para a nossa API a partir de um aplicativo que não roda em um dispositivo que você controla, nós **fortemente** recomendamos que você assine suas requisições e **sempre** verifique **seu servidor** para assinatura.

## **Como funciona?**

Quando você habilita essa funcionalidade em suas requisições, não enviaremos mais a resposta em formato JSON. O corpo da resposta se tornará um [JWT](https://pt.wikipedia.org/wiki/JSON_Web_Token) assinado usando o `clientSecret` do seu token. No **payload** desse JWT estará o corpo da resposta, com todos os campos que ele retornaria caso a resposta não fosse assinada.

## **Como isso garante a autenticidade das informações?**

É simples! Se um atacante modificar o corpo da resposta (por exemplo, dizendo que a foto dele passou no face liveness), essa alteração quebraria a assinatura do JWT, e você conseguiria detectar isso no seu backend, bloqueando o acesso dele ao seu sistema.

## **Como solicitar que uma resposta seja assinada?**

Basta enviar o valor `true` ao parâmetro de query string `shouldSingResponse` na sua requisição em rotas que suportam o recurso.

Você pode verificar se a rota suporta a resposta assinada conferindo as informações gerais na página da rota.

## **Exemplos**

### **Exemplo de requisição:**

Observe o `?shouldSignResponse=true` no final da URL.

```bash
curl --location \
    --request POST 'api.mobile.combateafraude.com/faces/liveness?shouldSignResponse=true' \
    --header 'Authorization: {token}' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "imageUrl": "https://images.generated.photos/DQ4EKrAPT-e5slG3cXmSw20uJ2AwwhOzJeVnpI9tlMA/rs:fit:512:512/Z3M6Ly9nZW5lcmF0/ZWQtcGhvdG9zLzA5/OTk4MDcuanBn.jpg"
    }'
```

### **Exemplo de resposta:**

```
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZXF1ZXN0SWQiOiJiZjk0MDNmZi05OTQwLTQ4NDYtYjRlZi04NDE2NjJmNTIxMzkiLCJpc0FsaXZlIjpmYWxzZSwiaWF0IjoxNTk0OTI1MDgwfQ.8EOm5MomxUA5WEkgdi5E_hppNG3dSpXXsHAldTjpo2s
```

O JWT acima foi assinado usando o `clientSecret` do `{token}` \*\*\*\* enviado na requisição.

Se extrairmos o **payload** do JWT acima, obtemos o seguinte JSON:

```json
{
    "requestId": "bf9403ff-9940-4846-b4ef-841662f52139",
    "isAlive": false,
    "iat": 1594925080
}
```

Se qualquer campo no **payload** for alterado, a assinatura é quebrada e você consegue detectar a alteração no seu backend.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.caf.io/caf-api/caf-api-pt-br/mobile-api-obsoleto/response-signature.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
