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

# Regeln und Statistiken

> Lies und ersetze Regeln pro Präfix mit blob.rules und lies die Kontonutzung mit blob.stats().

## Regeln

Regeln legen Standardwerte und Limits für jedes Objekt unter einem Präfix fest: Sichtbarkeit, Ablauf, maximale Größe, erlaubte Endungen, Cache und automatische Löschung. Sie gelten für jeden Upload unter dem Präfix, egal ob er vom SDK, einem Upload-Token oder dem Dashboard kommt. Plan-Limits und Abgleich findest du unter [Update Settings](/de/blob-reference/endpoint/settings-put).

### `rules.get()`

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

Gibt die gespeicherten Regeln als Array zurück. Jede Regel hat die unten aufgeführten Felder plus `created_at` und, wenn sie `delete_after_days` hat, `active_from`.

<Note>
  `active_from` ist **optional**: Die API sendet es nur bei Regeln mit `delete_after_days`. Berücksichtige in TypeScript, dass es `undefined` sein kann.
</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()` **ersetzt die gesamte Liste**. Sende jede Regel, die du behalten willst; `rules.set([])` entfernt alle. Um eine Regel hinzuzufügen, lies zuerst die Liste:

  ```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>

Die Methode gibt die gespeicherte Liste zurück, wie `rules.get()`.

| Feld                | Typ        | Beschreibung                                                                                |
| ------------------- | ---------- | ------------------------------------------------------------------------------------------- |
| `prefix`            | `string`   | Erforderlich. Das Präfix, für das die Regel gilt, z. B. `"a/b/"`.                           |
| `private`           | `boolean`  | Standardsichtbarkeit.                                                                       |
| `expire`            | `string`   | Standardablauf (`"30d"`, `"168h"`, ...).                                                    |
| `max_size`          | `number`   | Maximale Dateigröße in Bytes, 512 B bis 10 GiB.                                             |
| `extensions`        | `string[]` | 1 bis 50 erlaubte Endungen, entsprechend `^[a-z0-9]{1,16}(\.[a-z0-9]{1,16})?$`.             |
| `cache_control`     | `string`   | Standardwert für `Cache-Control`.                                                           |
| `delete_after_days` | `number`   | Löscht Objekte so viele Tage, nachdem sie geschrieben wurden, 7 bis 3650 (Enterprise ab 1). |

<Warning>
  `delete_after_days` wird erst **24 Stunden nach dem Speichern der Regel** wirksam (siehe `active_from`). Sobald die Regel aktiv ist, lassen sich gelöschte Objekte nicht wiederherstellen.
</Warning>

Wird eine Regel abgelehnt, enthält [`extra`](/de/sdks/blob/errors#squarecloudbloberror) des Fehlers das betroffene `prefix`:

```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()` ist ein Lesevorgang und wird [wiederholt](/de/sdks/blob/errors#wiederholungsrichtlinie). `rules.set()` erhält **einen einzigen Versuch**.
</Note>

## Statistiken

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

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

| Feld            | Beschreibung                                                     |
| --------------- | ---------------------------------------------------------------- |
| `usage.objects` | Anzahl der Objekte.                                              |
| `usage.storage` | Genutzter Speicher in Bytes.                                     |
| `plan.included` | In deinem Plan enthaltener Speicher in Bytes.                    |
| `billing`       | `extraStorage`, `storagePrice`, `objectsPrice`, `totalEstimate`. |
| `month`         | `days` und `average_storage` für den aktuellen Monat.            |

<Info>
  Die Statistiken sind eine **Schätzung**, die der Server **60 Sekunden** lang cacht. `billing` ist nur eine Schätzung des Speichers über deinem Plan, keine Rechnung.
</Info>

Siehe [Account Stats](/de/blob-reference/endpoint/stats).
