Quelle: https://spooly.eu/docs/errors

# Fehlercodes

Fehler kommen mit HTTP-Status, einem festen Code und einem deutschen Text. Zwei Fälle haben keinen Code: ungültige Felder (422) und zu große Anfragen (413). Programmier gegen den Code, der Text kann sich ändern.

## Aufbau

Ein Fehler mit Code trägt in `detail` ein Objekt mit `code` und `message`. Manche tragen in `data` mehr Angaben, hier die Farbe, die der Drucker meldet.

Der Text in `message` ist deutsch, auch wenn du Spooly auf Englisch nutzt.

Antwort (409):

```
{
  "detail": {
    "code": "andere_farbe",
    "message": "Der Drucker meldet in diesem Slot eine andere Farbe als diese Spule. Trotzdem zuordnen?",
    "data": {
      "gemeldet": {
        "farbe": "#E8E9DF",
        "material": "PLA"
      },
      "spule": {
        "farbe": "#1B1B1D"
      }
    }
  }
}
```

Ungültige Felder im Body oder in der Abfrage kommen als 422 mit einer Liste in `detail` und ohne `code`. `loc` nennt das Feld, `msg` den Grund. Dieser Text ist englisch und folgt dem Standardformat der Plattform. Programmier hier gegen `loc` und `type`.

Antwort (422):

```
{
  "detail": [
    {
      "type": "missing",
      "loc": [
        "body",
        "grams"
      ],
      "msg": "Field required",
      "input": {}
    }
  ]
}
```

Eine Anfrage über 64 KB lehnt Spooly ab, bevor es sie liest: 413 mit einem Text in `detail`, ebenfalls ohne `code`. [Grenzen](https://spooly.eu/docs/limits)

Antwort (413):

```
{
  "detail": "Anfrage ist zu groß."
}
```

## Alle Codes

| Status | Code | Bedeutung |
| --- | --- | --- |
| 401 | `invalid_key` | Schlüssel fehlt, ist unbekannt oder widerrufen, oder das Konto ist nicht aktiv |
| 403 | `api_disabled` | Die API ist für dieses Konto nicht freigeschaltet |
| 403 | `pro_expired` | Pro ist abgelaufen. Der Schlüssel bleibt gültig. |
| 403 | `insufficient_scope` | Der Verbindung fehlt das Recht zu ändern |
| 403 | `key_kind` | Der Schlüssel passt nicht zur Adresse: ein Tabellen-Schlüssel gegen die API, ein anderer gegen den Tabellen-Link, oder an der Spoolman-Adresse ein Schlüssel, der nicht die Art Waage oder Klipper-Drucker hat (und umgekehrt) |
| 404 | `not_found` | Spule, Lagerort, Slot, Aufgabe oder Drucker nicht gefunden |
| 409 | `slot_autopilot_off` | Der Slot-Autopilot ist nicht aktiv, Slots lassen sich nur lesen |
| 409 | `andere_farbe` | Der Drucker meldet eine andere Farbe. Wiederhol mit `confirm_color`. |
| 409 | `anderer_chip` | Die Spule hat schon einen anderen Bambu-Chip als der im Slot. Ist das eine neue Rolle? |
| 409 | `archiviert` | Die Spule ist archiviert |
| 409 | `gleichzeitig` | Der Slot wurde gleichzeitig geändert. Versuch es noch einmal. |
| 409 | `tare_missing` | Für die Spule ist kein Leerspulen-Gewicht hinterlegt |
| 409 | `spool_in_print` | Die Spule steckt in einem laufenden Druck |
| 409 | `place_taken` | Auf diesem Platz liegt schon eine andere Spule |
| 409 | `conflict` | Sonstiger Konflikt |
| 413 | (kein Code) | Die Anfrage ist größer als 64 KB |
| 422 | `invalid_input` | Ungültige Eingabe |
| 422 | `place_invalid` | Diesen Platz gibt es im Lagerort nicht (siehe `places`) |
| 422 | `gross_not_above_tare` | Das Bruttogewicht muss größer als die Tara sein |
| 422 | `above_spool_size` | Das Gewicht wäre größer als die Spule |
| 422 | `invalid_idempotency_key` | Der Idempotency-Key muss 1 bis 128 sichtbare ASCII-Zeichen haben |
| 422 | `idempotency_conflict` | Mit diesem Idempotency-Key wurde schon etwas anderes angefragt |
| 429 | `fair_use` | Tagesgrenze erreicht |
| 429 | `too_many_parallel` | Zu viele gleichzeitige Anfragen |
| 429 | `change_rate_limit`, `change_daily_limit`, `new_spool_daily_limit` | Änderungsgrenze erreicht |
| 429 | `too_many_keys` | Zu viele neue Schlüssel in einer Stunde |
| 500 | `internal_error` | Das hat nicht geklappt. Versuch es später noch einmal. |

## In Home Assistant und bei KIs

Home Assistant übersetzt die Codes in eigene Meldungen. Sie stehen unter [Fehlerhilfe](https://spooly.eu/docs/home-assistant/troubleshooting). Eine KI bekommt dieselben Codes und erklärt sie dir meist selbst.
