Quelle: https://spooly.eu/docs/api/printers

# Drucker

Alle Drucker deines Kontos und ihre Druckstunden. Steuern lassen sie sich nicht.

## Drucker auflisten

`GET /printers`

`state` ist `online`, `offline` oder `unknown`. `state` und `printing` gibt es nur mit sicherem Signal, sonst `unknown` bzw. null. Fortschritt und Restzeit gibt es nur bei Bambu Lab.

```bash
curl "https://spooly.eu/api/v1/printers" \
  -H "Authorization: Bearer $SPOOLY_KEY"
```

Antwort (200):

```
{
  "items": [
    {
      "printer_id": "e41b7c09a3d65f28b0c94e17d2a86f35",
      "name": "X1 Carbon von Tobi",
      "vendor": "bambulab",
      "model": "X1 Carbon",
      "state": "online",
      "printing": true,
      "progress_percent": 42,
      "remaining_minutes": 73
    }
  ]
}
```

## Druckstunden korrigieren

`PUT /printers/{printer_id}/hours`

Setzt die Gesamtstunden auf die Zahl am Gerät. Fälligkeiten springen nicht. Weniger als die von Spooly erfassten Stunden geht nicht.

Parameter:

- `printer_id` (Pfad): Aus `GET /printers` oder `GET /maintenance`
- `total_hours` (Body): 0 bis 1.000.000
- `Idempotency-Key` (Kopf, optional): 1 bis 128 sichtbare ASCII-Zeichen. [Idempotency-Key](https://spooly.eu/docs/api#api-idempotenz)

```bash
curl -X PUT "https://spooly.eu/api/v1/printers/e41b7c09a3d65f28b0c94e17d2a86f35/hours" \
  -H "Authorization: Bearer $SPOOLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"total_hours":830}'
```

Antwort (200):

```
{
  "change_id": 381,
  "spool": null,
  "slot": null,
  "old_grams": null,
  "new_grams": null,
  "replayed": false,
  "task": null,
  "printer": {
    "printer_id": "e41b7c09a3d65f28b0c94e17d2a86f35",
    "printer": "X1 Carbon von Tobi",
    "hours": 830,
    "prints": 640,
    "filament_kg": 41.3,
    "due_count": 1,
    "soon_count": 2,
    "health_score": 84,
    "hours_confirmed": true
  },
  "stock_empty": null,
  "summary": "Druckstunden von 812,5 auf 830 h korrigiert"
}
```
