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

# Substituir todas as regras de pasta

> Substitui a lista inteira de regras de pasta. Envie o etag da última leitura em If-Match, para que uma alteração feita em outro lugar não seja sobrescrita.

Substitui a lista inteira de regras de pasta pela lista que você enviar. O cabeçalho `If-Match` precisa conter o `etag` da sua última leitura; se a lista mudou desde então, a chamada falha com `BLOB_RULES_CONFLICT` e nada é salvo. Para alterar uma única regra, use [Criar ou atualizar uma regra](https://docs.vertracloud.app/pt-br/api-reference/endpoint/blob/rules/put.md).

**Escopo:** `blob:write`.

**If-Match** `string` *required*

O `etag` da última leitura da lista de regras.

**rules** `object[]` *required*

A lista completa de regras. Cada item aceita `prefix` (obrigatório) mais os campos de [Criar ou atualizar uma regra](https://docs.vertracloud.app/pt-br/api-reference/endpoint/blob/rules/put.md). Até 100 regras, e cada regra precisa de pelo menos um campo além do prefixo. `expire_seconds` não pode ser menor que a expiração mínima do plano.

**workspace\_id** `string`

O ID do workspace, quando o blob pertence a um workspace. A chamada atua sobre o blob do proprietário do workspace e exige a permissão `blob:read` do workspace (`blob:manage` nas rotas que alteram dados). Deixe de fora para atuar sobre o seu próprio blob.

### Exemplo de requisição

```bash theme={null}
curl -X PUT "https://blob.vertracloud.app/v1/rules" \
  -H "Authorization: Bearer $VERTRA_API_KEY" \
  -H "If-Match: v3" \
  -H "Content-Type: application/json" \
  -d '{"rules":[{"prefix":"tmp/","delete_after_days":30}]}'
```

### Resposta

**response** `object`

A lista salva e o seu novo etag.

**propriedades**

**rules** `object[]`

Regras de pasta. Vale o prefixo correspondente mais longo.

**rules\[].prefix** `string`

Prefixo da pasta, sempre armazenado com `/` no fim.

**rules\[].visibility** `string`

Visibilidade padrão dos novos objetos da pasta.

**rules\[].expire\_seconds** `number`

Expiração padrão de cada novo objeto, em segundos.

**rules\[].max\_size** `number`

Maior arquivo aceito, em bytes, de 512 B a 10 GB.

**rules\[].extensions** `string[]`

Extensões aceitas, de 1 a 50, em minúsculas, sem o ponto.

**rules\[].cache\_control** `string`

`cache_control` padrão dos novos objetos.

**rules\[].delete\_after\_days** `number`

Os objetos são excluídos esta quantidade de dias depois do upload, de 1 a 3650.

**rules\[].active\_from** `string`

Quando `delete_after_days` passa a valer, definido pela plataforma (24 horas depois que a regra é salva).

**rules\[].created\_at** `string`

Data em ISO 8601 em que a regra foi criada.

**etag** `string`

Versão da lista inteira de regras. Envie-a de volta em `If-Match` quando substituir a lista.

```json Response theme={null}
{
  "response": {
    "rules": [
      {
        "prefix": "tmp/",
        "delete_after_days": 30,
        "active_from": "2026-10-15T12:00:00.000Z",
        "created_at": "2026-10-14T12:00:00.000Z"
      }
    ],
    "etag": "v3"
  }
}
```

### Respostas de erro

**code** `string`

O código de erro que indica o motivo da falha. Valores possíveis:

* `AUTH_TOKEN_MISSING` (`401`): o cabeçalho `Authorization` não foi enviado.
* `API_KEY_INVALID` (`401`): a chave de API não existe, foi revogada ou o segredo não confere.
* `API_KEY_SCOPE_DENIED` (`403`): a chave não tem o escopo que esta rota exige (`blob:read` ou `blob:write`); `details.required` informa qual.
* `WORKSPACE_PERMISSION_DENIED` (`403`): somente com `workspace_id`: você não é membro, ou o seu papel não tem a permissão de blob.
* `WORKSPACE_NOT_FOUND` (`404`): somente com `workspace_id`: não existe workspace com esse ID, ou você não é membro.
* `VALIDATION_ERROR` (`400`): um parâmetro ou campo do corpo falhou na validação. `details.path` informa o campo; um cabeçalho `If-Match` ausente retorna este erro com `details.path` igual a `if-match`.
* `BLOB_NAMESPACE_SUSPENDED` (`403`): o armazenamento de blob da conta está suspenso, ou o plano expirou.
* `PLAN_RESTRICTED_FEATURE` (`403`): uma regra define `cache_control` como `no-cache` em um plano abaixo do Enterprise-26.
* `BLOB_RULES_CONFLICT` (`409`): o etag de `If-Match` está desatualizado. Leia a lista de novo e tente outra vez.
* `BLOB_RULE_LIMIT` (`409`): a lista tem mais regras do que o plano permite: 5, 10 ou 20.

```json Error Response (401) theme={null}
{
  "code": "AUTH_TOKEN_MISSING"
}
```

```json Error Response (403) theme={null}
{
  "code": "API_KEY_SCOPE_DENIED"
}
```

```json Error Response (404) theme={null}
{
  "code": "WORKSPACE_NOT_FOUND"
}
```

```json Error Response (400) theme={null}
{
  "code": "VALIDATION_ERROR"
}
```

```json Error Response (409) theme={null}
{
  "code": "BLOB_RULES_CONFLICT"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.