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

# Pedidos

> Consulta e gerenciamento de pedidos e seus desafios de confirmação.

## Visão Geral

Os **Pedidos** (`Orders`) são gerados automaticamente quando uma cobrança é criada. Um pedido pode conter múltiplas cobranças (charges).

***

## Status de um Pedido

| Status       | Descrição                                                |
| ------------ | -------------------------------------------------------- |
| `Pending`    | Aguardando processamento ou pagamento (ex: PIX pendente) |
| `Challenged` | Requer verificação adicional do cliente (OTP)            |
| `Approved`   | Pedido aprovado e pago com sucesso                       |
| `Declined`   | Pedido recusado pela operadora/gateway                   |
| `Refunded`   | Pagamento estornado para o cliente                       |
| `Canceled`   | Pedido cancelado                                         |

***

## Pedidos Desafiados (Challenged)

Quando um pedido entra no status `Challenged`, o cliente precisa confirmar a identidade antes que o pagamento seja processado. Isso pode ocorrer por:

* **OTP** — código de verificação enviado por SMS ou e-mail
* **Magic Link** — link de verificação enviado por e-mail

### Fluxo de confirmação

```
1. POST /v1/charge → status: Challenged (HTTP 202)
2. GET  /v1/orders/{code}/confirmations → lista os desafios pendentes
3. POST /v1/orders/{code}/confirmations/{id}/verify → submete o código OTP
   OU
   POST /v1/orders/{code}/confirmations/{id}/resend → reenvia o código
```

***

## Campos de uma Confirmação

| Campo        | Tipo     | Descrição                                    |
| ------------ | -------- | -------------------------------------------- |
| `id`         | string   | UUID identificador da confirmação            |
| `type`       | string   | Tipo: `otp`, `magic_link`                    |
| `status`     | string   | `pending`, `verified`, `expired`, `canceled` |
| `expires_at` | datetime | Data de expiração do desafio (nullable)      |

<Info>
  Confirmações têm prazo de expiração (15 minutos). Após expirar, use a rota `/resend` para gerar um novo código.
</Info>

***

## Formato de resposta

A rota de **listagem de confirmações** (`GET .../confirmations`) retorna diretamente `{"data": [...]}`, **sem** o envelope padrão `APIReturnUtil`.

Já as rotas de **verificação** e **reenvio** utilizam o envelope padrão com os campos `mensagem`, `erro`, `mensagenserro`, `codigoretorno`, `id` e `data`.

<Note>
  A rota de **verificação** (`/verify`) processa as cobranças pendentes do pedido e retorna o mesmo formato da criação de cobrança (HTTP 201 com dados da cobrança no campo `data`).
</Note>
