> ## 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.

# Criar ou atualizar uma regra de pasta

> Cria ou altera a regra de um prefixo de pasta, deixando as outras regras como estão.

Cria a regra de um prefixo de pasta ou a altera, e não mexe nas outras regras. Coloque o prefixo na URL, codificado em URL (por exemplo `tmp%2F`). A resposta é a lista inteira com o seu novo `etag`.

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

**prefix** `string` *required*

Prefixo da pasta, codificado em URL. Armazenado com `/` no fim.

Uma regra precisa de pelo menos um campo além do prefixo; uma regra vazia retorna `VALIDATION_ERROR`.

**visibility** `string`

Visibilidade padrão dos novos objetos da pasta: `public` ou `private`.

**expire\_seconds** `number`

Expiração padrão de cada novo objeto, em segundos. Pelo menos o mínimo de expiração do plano (7 dias, ou 1 hora no Enterprise-26 ou superior).

**max\_size** `number`

Maior arquivo aceito, de 512 bytes a 10 GB.

**extensions** `string[]`

Extensões aceitas: de 1 a 50 itens, cada um com de 1 a 16 caracteres em minúsculas (letras e dígitos), sem o ponto.

**cache\_control** `string`

`cache_control` padrão dos novos objetos. `no-cache` exige Enterprise-26 ou superior.

**delete\_after\_days** `number`

Excluir os objetos esta quantidade de dias depois do upload, de 1 a 3650. Passa a valer 24 horas depois que a regra é salva.

**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/tmp%2F" \
  -H "Authorization: Bearer $VERTRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"delete_after_days":30}'
```

### Resposta

**response** `object`

A lista inteira de regras 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.
* `BLOB_NAMESPACE_SUSPENDED` (`403`): o armazenamento de blob da conta está suspenso, ou o plano expirou. Uploads e outras gravações são recusados desde o início do período de carência de 72 horas.
* `VALIDATION_ERROR` (`400`): um parâmetro ou campo do corpo falhou na validação. `details.path` informa o campo.
* `BLOB_RULE_LIMIT` (`409`): adicionar esta regra ultrapassaria o limite de regras do plano: 5, 10 ou 20.
* `PLAN_RESTRICTED_FEATURE` (`403`): `cache_control` é `no-cache` em um plano abaixo do Enterprise-26.

```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_RULE_LIMIT"
}
```


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