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

# Gerenciar Uploads

> Consultar, atualizar status e excluir arquivos

## Obter Upload por ID

```bash theme={null}
GET /backend/uploads/{id}
```

**Resposta (200):**

```json theme={null}
{
  "id": "uuid",
  "tenant_id": "uuid",
  "filename": "foto_produto",
  "file_type": "media",
  "file_url": "https://api.leavo.ai/media/proxy/tenant_id/uuid.jpg",
  "mime_type": "image/jpeg",
  "size": 1048576,
  "status": "PENDING",
  "created_at": "2024-01-15T10:30:00Z",
  "updated_at": "2024-01-15T10:30:00Z"
}
```

## Listar Uploads do Tenant

```bash theme={null}
GET /backend/uploads/tenant/{tenantId}
```

Retorna todos os uploads do tenant, ordenados por data de criação.

## Atualizar Status

```bash theme={null}
PUT /backend/uploads/{id}/status
```

**Body:**

```json theme={null}
{
  "status": "ASSOCIATED"
}
```

| Status       | Descrição                                                  |
| ------------ | ---------------------------------------------------------- |
| `PENDING`    | Upload ainda não vinculado                                 |
| `ASSOCIATED` | Upload vinculado a uma entidade (protegido contra limpeza) |

## Excluir Upload

```bash theme={null}
DELETE /backend/uploads/{id}
```

Remove o arquivo do storage e o registro do banco de dados.

**Resposta:** 200 OK

## Limpar Uploads Órfãos

```bash theme={null}
POST /backend/uploads/cleanup?hours=24
```

Remove uploads com status `PENDING` mais antigos que o número de horas especificado.

| Parâmetro | Tipo    | Padrão | Descrição                     |
| --------- | ------- | ------ | ----------------------------- |
| `hours`   | integer | 24     | Horas mínimas desde a criação |

## Acesso Público aos Arquivos

Os arquivos podem ser acessados publicamente através do proxy de mídia:

```
GET /media/proxy/{path}
```

O proxy define os headers:

* `Content-Type`: tipo MIME do arquivo
* `Cache-Control`: `public, max-age=86400` (24 horas)
* `Access-Control-Allow-Origin`: `*`
