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

# Reemplazar todas las reglas de carpeta

> Reemplaza la lista completa de reglas de carpeta. Envía en If-Match el etag de la última lectura, para no sobrescribir un cambio hecho en otro sitio.

Reemplaza la lista completa de reglas de carpeta por la lista que envías. La cabecera `If-Match` debe contener el `etag` de
tu última lectura; si la lista cambió desde entonces, la llamada falla con `BLOB_RULES_CONFLICT` y no se guarda nada. Para
cambiar una sola regla, usa [Crear o actualizar una regla](https://docs.vertracloud.app/es-es/api-reference/endpoint/blob/rules/put.md).

**Ámbito:** `blob:write`.

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

El `etag` de la última lectura de la lista de reglas.

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

La lista completa de reglas. Cada elemento acepta `prefix` (obligatorio) más los campos de
[Crear o actualizar una regla](https://docs.vertracloud.app/es-es/api-reference/endpoint/blob/rules/put.md). Hasta 100 reglas, y cada regla necesita al
menos un campo además del prefijo. `expire_seconds` no puede ser menor que el plazo mínimo de caducidad del plan.

**workspace\_id** `string`

El ID del workspace, cuando el blob pertenece a un workspace. La petición actúa sobre el blob del propietario del
workspace y necesita el permiso `blob:read` del workspace (`blob:manage` en las rutas que modifican datos). Omítelo
para actuar sobre tu propio blob.

### Ejemplo de petición

```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}]}'
```

### Respuesta

**response** `object`

La lista guardada y su nuevo etag.

**propiedades**

**rules** `object[]`

Reglas de carpeta. Se aplica el prefijo coincidente más largo.

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

Prefijo de carpeta, que siempre se guarda con `/` al final.

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

Visibilidad por defecto de los objetos nuevos de la carpeta.

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

Caducidad por defecto de cada objeto nuevo, en segundos.

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

Archivo aceptado más grande, en bytes, de 512 B a 10 GB.

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

Extensiones aceptadas, de 1 a 50, en minúsculas, sin el punto.

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

`cache_control` por defecto de los objetos nuevos.

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

Los objetos se eliminan estos días después de subirlos, de 1 a 3650.

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

Cuándo empieza a aplicarse `delete_after_days`, lo fija la plataforma (24 horas después de guardar la regla).

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

Fecha ISO 8601 de creación de la regla.

**etag** `string`

Versión de la lista completa de reglas. Envíala de vuelta en `If-Match` cuando reemplaces la 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"
  }
}
```

### Respuestas de error

**code** `string`

El código de error que indica el motivo del fallo. Valores posibles:

* `AUTH_TOKEN_MISSING` (`401`): No se envió la cabecera `Authorization`.
* `API_KEY_INVALID` (`401`): La clave de API no existe, fue revocada o su secreto no coincide.
* `API_KEY_SCOPE_DENIED` (`403`): La clave no tiene el ámbito que necesita esta ruta (`blob:read` o `blob:write`); `details.required` lo indica.
* `WORKSPACE_PERMISSION_DENIED` (`403`): Solo con `workspace_id`: no eres miembro, o tu rol no tiene el permiso de blob.
* `WORKSPACE_NOT_FOUND` (`404`): Solo con `workspace_id`: no existe un workspace con ese ID, o no eres miembro.
* `VALIDATION_ERROR` (`400`): Un parámetro o un campo del cuerpo no superó la validación. `details.path` indica el campo; si falta la cabecera `If-Match`, devuelve este error con `details.path` en `if-match`.
* `BLOB_NAMESPACE_SUSPENDED` (`403`): El almacenamiento de blob de la cuenta está suspendido, o su plan expiró.
* `PLAN_RESTRICTED_FEATURE` (`403`): Una regla pone `cache_control` en `no-cache` en un plan inferior a Enterprise-26.
* `BLOB_RULES_CONFLICT` (`409`): El etag de `If-Match` no está actualizado. Vuelve a leer la lista y reintenta.
* `BLOB_RULE_LIMIT` (`409`): La lista tiene más reglas de las que permite el plan: 5, 10 o 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.