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

# Regole e statistiche

> Leggi e sostituisci le regole per prefisso con blob.rules, e leggi l'utilizzo dell'account con blob.stats().

## Regole

Le regole impostano valori predefiniti e limiti per ogni oggetto sotto un prefisso: visibilità, scadenza, dimensione massima, estensioni consentite, cache ed eliminazione automatica. Si applicano a ogni upload sotto il prefisso, che provenga dall'SDK, da un token di upload o dalla dashboard. Vedi [Update Settings](/it/blob-reference/endpoint/settings-put) per i limiti dei piani e la corrispondenza dei prefissi.

### `rules.get()`

```typescript theme={"system"}
const rules = await blob.rules.get();
```

Restituisce le regole salvate come array. Ogni regola ha i campi riportati sotto più `created_at`, e `active_from` quando ha `delete_after_days`.

<Note>
  `active_from` è **opzionale**: l'API lo invia solo per le regole con `delete_after_days`. In TypeScript, gestisci il caso in cui sia `undefined`.
</Note>

### `rules.set(rules)`

```typescript theme={"system"}
await blob.rules.set([
    { prefix: "tmp/", delete_after_days: 7 },
    { prefix: "avatars/", max_size: 5 * 1024 * 1024, extensions: ["png", "jpg"] },
]);
```

<Warning>
  `rules.set()` **sostituisce l'intero elenco**. Invia ogni regola che vuoi mantenere; `rules.set([])` le rimuove tutte. Per aggiungere una regola, leggi prima l'elenco:

  ```typescript theme={"system"}
  const current = await blob.rules.get();
  await blob.rules.set([
      ...current.map(({ created_at, active_from, ...rule }) => rule),
      { prefix: "exports/", expire: "30d" },
  ]);
  ```
</Warning>

Restituisce l'elenco salvato, come `rules.get()`.

| Campo               | Tipo       | Descrizione                                                                                        |
| ------------------- | ---------- | -------------------------------------------------------------------------------------------------- |
| `prefix`            | `string`   | Obbligatorio. Il prefisso a cui si applica la regola, ad es. `"a/b/"`.                             |
| `private`           | `boolean`  | Visibilità predefinita.                                                                            |
| `expire`            | `string`   | Scadenza predefinita (`"30d"`, `"168h"`, ...).                                                     |
| `max_size`          | `number`   | Dimensione massima del file in byte, da 512 B a 10 GiB.                                            |
| `extensions`        | `string[]` | Da 1 a 50 estensioni consentite, conformi a `^[a-z0-9]{1,16}(\.[a-z0-9]{1,16})?$`.                 |
| `cache_control`     | `string`   | `Cache-Control` predefinito.                                                                       |
| `delete_after_days` | `number`   | Elimina gli oggetti questo numero di giorni dopo la loro scrittura, da 7 a 3650 (Enterprise da 1). |

<Warning>
  `delete_after_days` ha effetto solo **24 ore dopo il salvataggio della regola** (vedi `active_from`). Una volta attiva, gli oggetti eliminati non possono essere recuperati.
</Warning>

Quando una regola viene rifiutata, l'[`extra`](/it/sdks/blob/errors#squarecloudbloberror) dell'errore riporta il `prefix` responsabile:

```typescript theme={"system"}
import { SquareCloudBlobError } from "@squarecloud/blob";

try {
    await blob.rules.set(rules);
} catch (error) {
    if (error instanceof SquareCloudBlobError) {
        console.error(error.code, error.extra.prefix);
    }
}
```

<Note>
  `rules.get()` è una lettura e viene [ritentato](/it/sdks/blob/errors#politica-di-retry). `rules.set()` ha un **solo tentativo**.
</Note>

## Statistiche

```typescript theme={"system"}
const stats = await blob.stats();

console.log(stats.usage.objects); // total objects
console.log(stats.usage.storage); // storage used, in bytes
```

| Campo           | Descrizione                                                      |
| --------------- | ---------------------------------------------------------------- |
| `usage.objects` | Numero di oggetti.                                               |
| `usage.storage` | Storage utilizzato, in byte.                                     |
| `plan.included` | Storage incluso nel tuo piano, in byte.                          |
| `billing`       | `extraStorage`, `storagePrice`, `objectsPrice`, `totalEstimate`. |
| `month`         | `days` e `average_storage` per il mese corrente.                 |

<Info>
  Le statistiche sono una **stima**, memorizzata in cache dal server per **60 secondi**. `billing` è solo una stima dello storage oltre il tuo piano, non una fattura.
</Info>

Vedi [Account Stats](/it/blob-reference/endpoint/stats).
