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

# Crear o actualizar una regla de carpeta

> Crea o cambia la regla de un prefijo de carpeta, dejando el resto de reglas como están.

Crea la regla de un prefijo de carpeta o la cambia, y deja las demás reglas intactas. Pon el prefijo en la URL, codificado
en URL (por ejemplo `tmp%2F`). La respuesta es la lista completa con su nuevo `etag`.

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

**prefix** `string` *required*

Prefijo de carpeta, codificado en URL. Se guarda con `/` al final.

Una regla necesita al menos un campo además del prefijo; una regla vacía devuelve `VALIDATION_ERROR`.

**visibility** `string`

Visibilidad por defecto de los objetos nuevos de la carpeta: `public` o `private`.

**expire\_seconds** `number`

Caducidad por defecto de cada objeto nuevo, en segundos. Como mínimo el plazo mínimo de caducidad del plan (7 días, o
1 hora en Enterprise-26 o superior).

**max\_size** `number`

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

**extensions** `string[]`

Extensiones aceptadas: de 1 a 50 elementos, cada uno de 1 a 16 caracteres en minúsculas (letras y dígitos), sin el punto.

**cache\_control** `string`

`cache_control` por defecto de los objetos nuevos. `no-cache` requiere Enterprise-26 o superior.

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

Elimina los objetos estos días después de subirlos, de 1 a 3650. Se aplica 24 horas después de guardar la regla.

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

### Respuesta

**response** `object`

La lista completa de reglas 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.
* `BLOB_NAMESPACE_SUSPENDED` (`403`): El almacenamiento de blob de la cuenta está suspendido, o su plan expiró. Las subidas y otras escrituras se rechazan desde el inicio del periodo de gracia de 72 horas.
* `VALIDATION_ERROR` (`400`): Un parámetro o un campo del cuerpo no superó la validación. `details.path` indica el campo.
* `BLOB_RULE_LIMIT` (`409`): Añadir esta regla superaría el límite de reglas del plan: 5, 10 o 20.
* `PLAN_RESTRICTED_FEATURE` (`403`): `cache_control` es `no-cache` en un plan inferior a 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.