Commit f48813

2026-03-02 13:55:54 Manuel Weiser: docs: Add SpoolmanDB Import and Spoolman API plugin documentation; update login and admin sections for SSO support
.gitignore ..
@@ 65,4 65,6 @@
spec
bump-version.sh
_*
- local_cache
\ No newline at end of file
+ local_cache
+ .opencode
+ AGENTS.md
\ No newline at end of file
docs/de/00-inhalt.md ..
@@ 26,6 26,8 @@
| 12 | [Farbverwaltung](12-farbverwaltung.md) | Farben für Filamente definieren |
| 13 | [Tipps & Häufige Fragen](13-faq.md) | FAQ und Empfehlungen |
| 14 | [Plugin: BambuLab](14-plugin-bambulab.md) | BambuLab-Druckertreiber-Plugin |
+ | 15 | [Plugin: SpoolmanDB Import](15-plugin-spoolmandb.md) | Filamente aus der SpoolmanDB importieren |
+ | 16 | [Plugin: Spoolman API](16-plugin-spoolmanapi.md) | Spoolman-kompatible API für externe Tools |
---
docs/de/02-anmeldung.md ..
@@ 14,6 14,14 @@
Nach erfolgreicher Anmeldung gelangen Sie direkt zum **Dashboard**.
+ ### Single Sign-On (SSO)
+
+ Wenn Ihr Administrator **OIDC (OpenID Connect)** konfiguriert hat, erscheint unterhalb des Login-Formulars ein zusätzlicher SSO-Button (z. B. „Login mit Authentik“).
+
+ Klicken Sie auf den SSO-Button, um zu Ihrem Identity Provider weitergeleitet zu werden. Nach erfolgreicher Authentifizierung dort werden Sie automatisch in FilaMan eingeloggt.
+
+ > 💡 **Hinweis:** SSO-Login funktioniert nur für Benutzer, die bereits ein Konto in FilaMan mit einer übereinstimmenden E-Mail-Adresse haben. Wenn Sie noch kein Konto haben, wenden Sie sich an Ihren Administrator.
+
---
← [Zurück: Einleitung](./01-einleitung.md) | [Weiter: Navigation & Benutzeroberfläche →](./03-navigation.md)
docs/de/11-admin.md ..
@@ 15,6 15,7 @@
| **Devices** | Geräte-Token-Verwaltung |
| **System Extra Fields** | Systemweite Zusatzfelder für Spulen und Filamente |
| **System** | Plugins und Systemverwaltung |
+ | **OIDC / SSO** | OpenID Connect Single Sign-On Konfiguration |
---
@@ 196,7 197,38 @@
---
- ## 11.6 Gefahrenzone
+ ## 11.6 OIDC / SSO
+
+ **URL:** `http(s)://url/admin/oidc`
+
+ > ⚠️ **Hinweis:** Die OIDC-Kachel im Admin-Panel ist nur klickbar, wenn FilaMan über **HTTPS** aufgerufen wird. Bei HTTP-Verbindungen zeigt die Kachel einen Hinweis, dass OIDC nur über HTTPS funktioniert, und ist nicht klickbar.
+
+ In diesem Bereich können Administratoren **OpenID Connect (OIDC)** für Single Sign-On (SSO) konfigurieren. Benutzer können sich dann über einen externen Identity Provider anmelden (z. B. Authentik, Keycloak, Azure AD).
+
+ ### Konfigurationsfelder
+
+ | Einstellung | Beschreibung |
+ |-------------|-------------|
+ | **Aktiviert** | Toggle zum Aktivieren/Deaktivieren des OIDC-Logins |
+ | **Issuer URL** | Die Issuer-URL des OIDC-Providers (muss `https://` sein) |
+ | **Client ID** | Die beim OIDC-Provider registrierte Client-ID |
+ | **Client Secret** | Das Client-Secret (wird verschlüsselt in der Datenbank gespeichert) |
+ | **Scopes** | Angeforderte OIDC-Scopes (Standard: `openid email profile`) |
+ | **Button-Text** | Benutzerdefinierter Text für den SSO-Button auf der Login-Seite (z. B. „Login mit Authentik") |
+
+ ### Voraussetzungen
+
+ - **HTTPS erforderlich** — OIDC funktioniert nur, wenn FilaMan über HTTPS aufgerufen wird
+ - **Umgebungsvariable `OIDC_ENC_KEY`** — Muss gesetzt sein, um das Client-Secret zu verschlüsseln. Generieren mit:
+ ```bash
+ openssl rand -hex 32
+ ```
+ - **Nur bestehende Benutzer** — Nur Benutzer, die bereits in FilaMan existieren, können sich per OIDC anmelden. Die E-Mail-Adresse des Providers muss mit einem bestehenden Benutzerkonto übereinstimmen. Die E-Mail muss vom Provider als verifiziert markiert sein.
+ - **Keine automatische Erstellung** — OIDC-Login erstellt keine neuen Benutzerkonten
+
+ ---
+
+ ## 11.7 Gefahrenzone
Am unteren Ende des Admin-Panels befindet sich die rot markierte **Danger Zone** mit einer kritischen Aktion:
docs/de/14-plugin-bambulab.md ..
@@ 2,6 2,8 @@
Das **BambuLab-Plugin** ist ein Driver-Plugin, das FilaMan um die vollständige Integration von BambuLab 3D-Druckern erweitert. Es ermöglicht die Kommunikation über MQTT, die Verwaltung von AMS-Slots und das automatische Setzen von Filament-Einstellungen.
+ > ⚠️ **Wichtig:** Die Steuerung des Druckers über FilaMan (z. B. Spulen im Drucker/AMS setzen) funktioniert nur, wenn der Drucker im **LAN-only Modus** UND im **Developer Mode** betrieben wird.
+
**Installation:** → [Admin: Plugin-Verwaltung](./11-admin.md#115-system-plugin-verwaltung)
---
@@ 152,4 154,4 @@
---
- ← [Zurück: Tipps & FAQ](./13-faq.md) | [Weiter: Weitere Plugins →](#)
+ ← [Zurück: Tipps & FAQ](./13-faq.md) | [Weiter: Plugin: SpoolmanDB Import →](./15-plugin-spoolmandb.md)
/dev/null .. docs/de/15-plugin-spoolmandb.md
@@ 0,0 1,134 @@
+ # Plugin: SpoolmanDB Import
+
+ Das **SpoolmanDB Import-Plugin** ermöglicht den Import von Filament-Daten aus der [SpoolmanDB Community-Datenbank](https://github.com/Donkie/SpoolmanDB) direkt in FilaMan. Die SpoolmanDB ist eine offene, von der Community gepflegte Datenbank mit Filament-Informationen zahlreicher Hersteller.
+
+ **Installation:** → [Admin: Plugin-Verwaltung](./11-admin.md#115-system-plugin-verwaltung)
+
+ ---
+
+ ## Übersicht
+
+ | Eigenschaft | Wert |
+ |-------------|------|
+ | **Plugin-Typ** | Import |
+ | **Autor** | FilaMan |
+ | **Quelle** | [Fire-Devils/filaman-plugins](https://github.com/Fire-Devils/filaman-plugins) (Registry) |
+ | **Datenquelle** | [SpoolmanDB](https://github.com/Donkie/SpoolmanDB) (GitHub) |
+ | **Fähigkeiten** | Hersteller-Import, Filament-Import, Farben-Import, Durchmesser-Filter |
+
+ ---
+
+ ## Was ist die SpoolmanDB?
+
+ Die [SpoolmanDB](https://github.com/Donkie/SpoolmanDB) ist eine von der 3D-Druck-Community gepflegte Open-Source-Datenbank, die Filament-Informationen vieler Hersteller enthält. Dazu gehören:
+
+ - Hersteller-Namen
+ - Filament-Bezeichnungen und Materialtypen
+ - Farben (Einzel- und Multicolor)
+ - Durchmesser, Gewicht und Dichte
+ - Empfohlene Extruder- und Betttemperaturen
+ - Spulengewicht und Spulenmaterial
+ - Oberflächen-Eigenschaften (transluzent, leuchtend, etc.)
+
+ ---
+
+ ## Import-Seite
+
+ Nach der Installation des Plugins finden Sie die Import-Seite unter:
+
+ **Admin → System → SpoolmanDB Import**
+
+ Die Import-Seite führt Sie in drei Schritten durch den Prozess.
+
+ ---
+
+ ## Schritt 1: Importmodus wählen
+
+ ### Durchmesser-Filter
+
+ Vor der Auswahl des Importmodus können Sie optional nach **Durchmesser** filtern:
+
+ | Option | Beschreibung |
+ |--------|-------------|
+ | **Alle Durchmesser** | Keine Filterung |
+ | **1.75 mm** | Nur 1.75 mm Filamente (Standard) |
+ | **2.85 mm** | Nur 2.85 mm Filamente |
+
+ ### Import-Modi
+
+ | Modus | Beschreibung |
+ |-------|-------------|
+ | **Alles importieren** | Importiert alle Filamente und Hersteller aus der SpoolmanDB |
+ | **Nach Hersteller** | Importiert alle Filamente eines bestimmten Herstellers — wählen Sie den Hersteller aus dem Dropdown |
+ | **Einzelnes Filament** | Importiert ein bestimmtes Filament gezielt — wählen Sie Hersteller (optional als Filter) und Filament aus |
+
+ ---
+
+ ## Schritt 2: Vorschau
+
+ Nach der Auswahl des Importmodus können Sie eine **Vorschau** laden. Je nach Modus wird angezeigt:
+
+ - **Alles importieren:** Gesamtzahl der Hersteller und Filamente
+ - **Nach Hersteller:** Tabelle mit allen Filamenten des gewählten Herstellers (Name, Material, Durchmesser)
+ - **Einzelnes Filament:** Detailansicht mit allen verfügbaren Informationen (Hersteller, Name, Material, Durchmesser, Gewicht, Dichte, Farbe, Temperaturen)
+
+ > **Tipp:** Prüfen Sie die Vorschau sorgfältig, bevor Sie den Import starten.
+
+ ---
+
+ ## Schritt 3: Import ausführen
+
+ Klicken Sie auf **„Import starten"**, um die ausgewählten Daten in FilaMan zu importieren.
+
+ ### Was wird importiert?
+
+ | Daten | Beschreibung |
+ |-------|-------------|
+ | **Hersteller** | Werden als neue Hersteller in FilaMan angelegt (falls nicht bereits vorhanden) |
+ | **Filamente** | Werden als neue Filamente mit allen verfügbaren Informationen erstellt |
+ | **Farben** | Werden als neue Farben in der Farbverwaltung angelegt (falls nicht bereits vorhanden) |
+
+ ### Duplikat-Erkennung
+
+ - **Hersteller** werden anhand des Namens (case-insensitive) erkannt — bereits vorhandene werden übersprungen
+ - **Filamente** werden anhand der SpoolmanDB-ID erkannt — bereits importierte werden übersprungen
+ - **Farben** werden anhand des Hex-Codes erkannt — bereits vorhandene werden wiederverwendet
+
+ > **Wichtig:** Bestehende Daten in FilaMan werden **nicht** überschrieben oder verändert. Der Import erstellt nur neue Einträge.
+
+ ### Import-Ergebnis
+
+ Nach Abschluss des Imports wird eine Zusammenfassung angezeigt:
+
+ | Kategorie | Anzeige |
+ |-----------|---------|
+ | **Hersteller** | Anzahl erstellt / übersprungen |
+ | **Filamente** | Anzahl erstellt / übersprungen |
+ | **Farben** | Anzahl erstellt / übersprungen |
+ | **Fehler** | Liste eventueller Fehler (z. B. fehlende Hersteller-Zuordnung) |
+
+ ---
+
+ ## Importierte Daten
+
+ Die folgenden Filament-Felder werden aus der SpoolmanDB übernommen (sofern vorhanden):
+
+ | SpoolmanDB-Feld | FilaMan-Feld |
+ |-----------------|-------------|
+ | `manufacturer` | Hersteller |
+ | `name` + `material` | Bezeichnung |
+ | `material` | Materialtyp |
+ | `fill` | Materialuntergruppe (z. B. Glasfaser, Carbon) |
+ | `diameter` | Durchmesser |
+ | `weight` | Rohmaterialgewicht |
+ | `spool_weight` | Standard-Spulengewicht |
+ | `spool_type` | Spulenmaterial |
+ | `density` | Dichte |
+ | `color_hex` / `color_hexes` | Farben (Einzel-/Multicolor) |
+ | `multi_color_direction` | Multicolor-Stil (Gradient/Striped) |
+ | `translucent` / `glow` / `finish` | Oberflächentyp |
+ | `extruder_temp`, `bed_temp` etc. | Zusatzfelder (custom_fields) |
+
+ ---
+
+ ← [Zurück: Plugin: BambuLab](./14-plugin-bambulab.md) | [Weiter: Plugin: Spoolman API →](./16-plugin-spoolmanapi.md)
/dev/null .. docs/de/16-plugin-spoolmanapi.md
@@ 0,0 1,164 @@
+ # Plugin: Spoolman API
+
+ Das **Spoolman API-Plugin** stellt eine vollständig Spoolman-kompatible REST-API bereit, die auf das interne Datenmodell von FilaMan abgebildet wird. Externe Tools wie **Moonraker**, **OctoPrint** und andere können FilaMan damit als **Drop-in-Ersatz für Spoolman** nutzen. Im Gegensatz zu Spoolman selbst enthält dieses Plugin eine **IP-basierte Zugriffskontrolle** — eine Sicherheitsebene, die in Spoolman fehlt.
+
+ **Installation:** → [Admin: Plugin-Verwaltung](./11-admin.md#115-system-plugin-verwaltung)
+
+ ---
+
+ ## Übersicht
+
+ | Eigenschaft | Wert |
+ |-------------|------|
+ | **Plugin-Typ** | Integration |
+ | **Autor** | FilaMan |
+ | **Quelle** | [Fire-Devils/filaman-plugins](https://github.com/Fire-Devils/filaman-plugins) (Registry) |
+ | **API-Pfad** | `/spoolman/api/v1/` |
+ | **Fähigkeiten** | Spoolman API v1-Kompatibilität, CRUD-Operationen, CSV/JSON-Export, IP-Zugriffskontrolle |
+
+ ---
+
+ ## Was ist Spoolman?
+
+ [Spoolman](https://github.com/Donkie/Spoolman) ist eine verbreitete Open-Source-Software zur Verwaltung von 3D-Drucker-Filamenten. Viele Tools im 3D-Druck-Ökosystem (z. B. Moonraker, OctoPrint) unterstützen die Spoolman-API, um Filament-Verbrauch zu tracken und Spulen zu verwalten.
+
+ Mit diesem Plugin kann FilaMan anstelle von Spoolman eingesetzt werden, ohne dass externe Tools umkonfiguriert werden müssen — sie sprechen einfach die gleiche API.
+
+ ---
+
+ ## Konfiguration externer Tools
+
+ ### Moonraker (Klipper)
+
+ Tragen Sie in Ihrer `moonraker.conf` folgendes ein:
+
+ ```ini
+ [spoolman]
+ server: http://<filaman-host>:8000/spoolman
+ ```
+
+ Ersetzen Sie `<filaman-host>` durch die IP-Adresse oder den Hostnamen Ihrer FilaMan-Installation.
+
+ ### OctoPrint
+
+ Verwenden Sie in den Spoolman-Plugin-Einstellungen von OctoPrint die URL:
+
+ ```
+ http://<filaman-host>:8000/spoolman
+ ```
+
+ ### Andere Tools
+
+ Jedes Tool, das die Spoolman-API unterstützt, kann mit der gleichen URL konfiguriert werden:
+
+ ```
+ http://<filaman-host>:8000/spoolman/api/v1/
+ ```
+
+ ---
+
+ ## IP-Zugriffskontrolle
+
+ Das Plugin bietet eine **IP-basierte Zugriffskontrolle**, mit der Sie einschränken können, welche Geräte auf die Spoolman-API zugreifen dürfen.
+
+ ### Einstellungen
+
+ Die Einstellungen finden Sie auf der Plugin-Seite im Admin-Bereich unter **Spoolman API**.
+
+ | Einstellung | Beschreibung |
+ |-------------|-------------|
+ | **IP-Filter aktiviert** | Schaltet die IP-Zugriffskontrolle ein/aus. Standardmäßig **deaktiviert** (alle IPs erlaubt). |
+ | **Erlaubte IPs** | Liste der erlaubten IP-Adressen oder Bereiche |
+
+ ### Unterstützte IP-Formate
+
+ | Format | Beispiel | Beschreibung |
+ |--------|---------|-------------|
+ | **Wildcard** | `*` | Alle IPs erlauben |
+ | **Einzelne IP** | `192.168.1.5` | Exakte IP-Adresse |
+ | **CIDR-Bereich** | `192.168.1.0/24` | Gesamtes Subnetz |
+ | **Großer Bereich** | `10.0.0.0/8` | Großer Netzwerkbereich |
+
+ > **Hinweis:** Wenn der IP-Filter aktiviert ist und eine nicht erlaubte IP zugreift, wird der Zugriff mit HTTP 403 (Forbidden) abgelehnt.
+
+ ---
+
+ ## API-Endpunkte
+
+ Alle Spoolman-Endpunkte sind unter dem Pfad `/spoolman/api/v1/` verfügbar:
+
+ ### System
+
+ | Methode | Pfad | Beschreibung |
+ |---------|------|-------------|
+ | GET | `/info` | API-Informationen |
+ | GET | `/health` | Health-Check |
+
+ ### Hersteller (Vendors)
+
+ | Methode | Pfad | Beschreibung |
+ |---------|------|-------------|
+ | GET | `/vendor` | Alle Hersteller auflisten |
+ | POST | `/vendor` | Neuen Hersteller erstellen |
+ | GET | `/vendor/{id}` | Hersteller abrufen |
+ | PATCH | `/vendor/{id}` | Hersteller aktualisieren |
+ | DELETE | `/vendor/{id}` | Hersteller löschen |
+
+ ### Filamente
+
+ | Methode | Pfad | Beschreibung |
+ |---------|------|-------------|
+ | GET | `/filament` | Alle Filamente auflisten |
+ | POST | `/filament` | Neues Filament erstellen |
+ | GET | `/filament/{id}` | Filament abrufen |
+ | PATCH | `/filament/{id}` | Filament aktualisieren |
+ | DELETE | `/filament/{id}` | Filament löschen |
+
+ ### Spulen (Spools)
+
+ | Methode | Pfad | Beschreibung |
+ |---------|------|-------------|
+ | GET | `/spool` | Alle Spulen auflisten |
+ | POST | `/spool` | Neue Spule erstellen |
+ | GET | `/spool/{id}` | Spule abrufen |
+ | PATCH | `/spool/{id}` | Spule aktualisieren |
+ | DELETE | `/spool/{id}` | Spule löschen |
+ | PUT | `/spool/{id}/use` | Filament von Spule verbrauchen |
+ | PUT | `/spool/{id}/measure` | Spulengewicht messen |
+
+ ### Weitere Endpunkte
+
+ | Methode | Pfad | Beschreibung |
+ |---------|------|-------------|
+ | GET | `/material` | Materialtypen auflisten |
+ | GET | `/location` | Lagerorte auflisten |
+ | PATCH | `/location/{name}` | Lagerort umbenennen |
+ | GET | `/setting/{key}` | Einstellung abrufen |
+ | POST | `/setting/{key}` | Einstellung setzen |
+
+ ### Export
+
+ | Methode | Pfad | Beschreibung |
+ |---------|------|-------------|
+ | GET | `/export/spools` | Spulen exportieren (CSV/JSON) |
+ | GET | `/export/filaments` | Filamente exportieren (CSV/JSON) |
+ | GET | `/export/vendors` | Hersteller exportieren (CSV/JSON) |
+ | POST | `/backup` | Backup erstellen |
+
+ ---
+
+ ## Daten-Mapping
+
+ Die Spoolman-API-Begriffe werden intern auf das FilaMan-Datenmodell abgebildet:
+
+ | Spoolman-Begriff | FilaMan-Entsprechung |
+ |-----------------|---------------------|
+ | Vendor | Hersteller (Manufacturer) |
+ | Filament | Filament |
+ | Spool | Spule (Spool) |
+ | Location | Lagerort (Location) |
+ | Extra Fields | Zusatzfelder (Custom Fields) |
+
+ ---
+
+ ← [Zurück: Plugin: SpoolmanDB Import](./15-plugin-spoolmandb.md) | [Weiter: Weitere Plugins →](#)
docs/en/00-contents.md ..
@@ 26,6 26,8 @@
| 12 | [Color Management](12-colors.md) | Defining colors for filaments |
| 13 | [Tips & FAQ](13-faq.md) | Frequently asked questions |
| 14 | [Plugin: BambuLab](14-plugin-bambulab.md) | BambuLab printer driver plugin |
+ | 15 | [Plugin: SpoolmanDB Import](15-plugin-spoolmandb.md) | Import filaments from the SpoolmanDB database |
+ | 16 | [Plugin: Spoolman API](16-plugin-spoolmanapi.md) | Spoolman-compatible API for external tools |
---
docs/en/02-login.md ..
@@ 14,6 14,14 @@
After a successful login you will be taken directly to the **Dashboard**.
+ ### Single Sign-On (SSO)
+
+ If your administrator has configured **OIDC (OpenID Connect)**, an additional SSO button appears below the login form (e.g. "Login with Authentik").
+
+ Click the SSO button to be redirected to your organization's identity provider. After successful authentication there, you will be automatically logged into FilaMan.
+
+ > 💡 **Note:** SSO login only works for users who already have an account in FilaMan with a matching email address. If you don't have an account yet, contact your administrator.
+
---
← [Back: Introduction](01-introduction.md) | [Next: Navigation & UI →](03-navigation.md)
docs/en/11-admin.md ..
@@ 15,6 15,7 @@
| **Devices** | Device token management |
| **System Extra Fields** | System-wide extra fields for spools and filaments |
| **System** | Plugins and system management |
+ | **OIDC / SSO** | OpenID Connect Single Sign-On configuration |
---
@@ 196,7 197,38 @@
---
- ## 11.6 Danger Zone
+ ## 11.6 OIDC / SSO
+
+ **URL:** `http(s)://url/admin/oidc`
+
+ > ⚠️ **Note:** The OIDC card on the Admin Panel is only clickable when accessing FilaMan via **HTTPS**. On HTTP connections, the card displays a notice that OIDC requires HTTPS and is not clickable.
+
+ This section allows administrators to configure **OpenID Connect (OIDC)** for Single Sign-On (SSO). Users can then log in using an external identity provider (e.g. Authentik, Keycloak, Azure AD).
+
+ ### Configuration Fields
+
+ | Setting | Description |
+ |---------|-------------|
+ | **Enabled** | Toggle to enable or disable OIDC login |
+ | **Issuer URL** | The OIDC provider's issuer URL (must be `https://`) |
+ | **Client ID** | The client ID registered with your OIDC provider |
+ | **Client Secret** | The client secret (stored encrypted in the database) |
+ | **Scopes** | OIDC scopes to request (default: `openid email profile`) |
+ | **Button Text** | Custom label for the SSO button on the login page (e.g. "Login with Authentik") |
+
+ ### Requirements
+
+ - **HTTPS required** — OIDC only works when FilaMan is accessed via HTTPS
+ - **`OIDC_ENC_KEY` environment variable** — Must be set for encrypting the client secret. Generate with:
+ ```bash
+ openssl rand -hex 32
+ ```
+ - **Existing users only** — Only users who already exist in FilaMan can log in via OIDC. The provider's email address must match an existing user account. The email must be verified by the provider.
+ - **No auto-creation** — OIDC login does not create new user accounts
+
+ ---
+
+ ## 11.7 Danger Zone
At the bottom of the Admin Panel you will find the red-highlighted **Danger Zone** with one critical action:
docs/en/14-plugin-bambulab.md ..
@@ 2,6 2,8 @@
The **BambuLab Plugin** is a Driver plugin that extends FilaMan with full BambuLab 3D printer integration. It enables communication via MQTT, AMS slot management, and automatic filament setting assignment.
+ > ⚠️ **Important:** Controlling the printer via FilaMan (e.g. setting spools in the printer/AMS) only works when the printer is in **LAN-only Mode** AND **Developer Mode**.
+
**Installation:** → [Admin: Plugin Management](./11-admin.md#115-system-plugin-management)
---
@@ 152,4 154,4 @@
---
- ← [Back: Tips & FAQ](./13-faq.md) | [Next: More Plugins →](#)
+ ← [Back: Tips & FAQ](./13-faq.md) | [Next: Plugin: SpoolmanDB Import →](./15-plugin-spoolmandb.md)
/dev/null .. docs/en/15-plugin-spoolmandb.md
@@ 0,0 1,134 @@
+ # Plugin: SpoolmanDB Import
+
+ The **SpoolmanDB Import Plugin** allows you to import filament data from the [SpoolmanDB community database](https://github.com/Donkie/SpoolmanDB) directly into FilaMan. SpoolmanDB is an open, community-maintained database containing filament information from numerous manufacturers.
+
+ **Installation:** → [Admin: Plugin Management](./11-admin.md#115-system-plugin-management)
+
+ ---
+
+ ## Overview
+
+ | Property | Value |
+ |----------|-------|
+ | **Plugin Type** | Import |
+ | **Author** | FilaMan |
+ | **Source** | [Fire-Devils/filaman-plugins](https://github.com/Fire-Devils/filaman-plugins) (Registry) |
+ | **Data Source** | [SpoolmanDB](https://github.com/Donkie/SpoolmanDB) (GitHub) |
+ | **Capabilities** | Manufacturer import, Filament import, Color import, Diameter filter |
+
+ ---
+
+ ## What is SpoolmanDB?
+
+ [SpoolmanDB](https://github.com/Donkie/SpoolmanDB) is a community-maintained open-source database containing filament information from many manufacturers. It includes:
+
+ - Manufacturer names
+ - Filament names and material types
+ - Colors (single and multi-color)
+ - Diameter, weight, and density
+ - Recommended extruder and bed temperatures
+ - Spool weight and spool material
+ - Surface properties (translucent, glow, etc.)
+
+ ---
+
+ ## Import Page
+
+ After installing the plugin, you can find the import page at:
+
+ **Admin → System → SpoolmanDB Import**
+
+ The import page guides you through the process in three steps.
+
+ ---
+
+ ## Step 1: Choose Import Mode
+
+ ### Diameter Filter
+
+ Before selecting the import mode, you can optionally filter by **diameter**:
+
+ | Option | Description |
+ |--------|-------------|
+ | **All diameters** | No filtering |
+ | **1.75 mm** | Only 1.75 mm filaments (default) |
+ | **2.85 mm** | Only 2.85 mm filaments |
+
+ ### Import Modes
+
+ | Mode | Description |
+ |------|-------------|
+ | **Import all** | Imports all filaments and manufacturers from SpoolmanDB |
+ | **By manufacturer** | Imports all filaments from a specific manufacturer — select the manufacturer from the dropdown |
+ | **Single filament** | Imports a specific filament — select manufacturer (optional filter) and filament |
+
+ ---
+
+ ## Step 2: Preview
+
+ After selecting the import mode, you can load a **preview**. Depending on the mode, it shows:
+
+ - **Import all:** Total count of manufacturers and filaments
+ - **By manufacturer:** Table listing all filaments from the chosen manufacturer (name, material, diameter)
+ - **Single filament:** Detail view with all available information (manufacturer, name, material, diameter, weight, density, color, temperatures)
+
+ > **Tip:** Review the preview carefully before starting the import.
+
+ ---
+
+ ## Step 3: Execute Import
+
+ Click **"Start Import"** to import the selected data into FilaMan.
+
+ ### What Gets Imported?
+
+ | Data | Description |
+ |------|-------------|
+ | **Manufacturers** | Created as new manufacturers in FilaMan (if not already present) |
+ | **Filaments** | Created as new filaments with all available information |
+ | **Colors** | Created as new colors in color management (if not already present) |
+
+ ### Duplicate Detection
+
+ - **Manufacturers** are matched by name (case-insensitive) — existing ones are skipped
+ - **Filaments** are matched by SpoolmanDB ID — previously imported ones are skipped
+ - **Colors** are matched by hex code — existing ones are reused
+
+ > **Important:** Existing data in FilaMan is **never** overwritten or modified. The import only creates new entries.
+
+ ### Import Result
+
+ After the import completes, a summary is displayed:
+
+ | Category | Display |
+ |----------|---------|
+ | **Manufacturers** | Count created / skipped |
+ | **Filaments** | Count created / skipped |
+ | **Colors** | Count created / skipped |
+ | **Errors** | List of any errors (e.g. missing manufacturer assignment) |
+
+ ---
+
+ ## Imported Data
+
+ The following filament fields are imported from SpoolmanDB (if available):
+
+ | SpoolmanDB Field | FilaMan Field |
+ |-----------------|---------------|
+ | `manufacturer` | Manufacturer |
+ | `name` + `material` | Designation |
+ | `material` | Material type |
+ | `fill` | Material subgroup (e.g. glass fiber, carbon) |
+ | `diameter` | Diameter |
+ | `weight` | Raw material weight |
+ | `spool_weight` | Default spool weight |
+ | `spool_type` | Spool material |
+ | `density` | Density |
+ | `color_hex` / `color_hexes` | Colors (single/multi-color) |
+ | `multi_color_direction` | Multi-color style (gradient/striped) |
+ | `translucent` / `glow` / `finish` | Finish type |
+ | `extruder_temp`, `bed_temp` etc. | Extra fields (custom_fields) |
+
+ ---
+
+ ← [Back: Plugin: BambuLab](./14-plugin-bambulab.md) | [Next: Plugin: Spoolman API →](./16-plugin-spoolmanapi.md)
/dev/null .. docs/en/16-plugin-spoolmanapi.md
@@ 0,0 1,164 @@
+ # Plugin: Spoolman API
+
+ The **Spoolman API Plugin** exposes a fully Spoolman-compatible REST API that maps to FilaMan's internal data model. External tools like **Moonraker**, **OctoPrint**, and others can use FilaMan as a **drop-in replacement for Spoolman**. Unlike Spoolman itself, this plugin includes **IP-based access control** — a security layer missing in Spoolman.
+
+ **Installation:** → [Admin: Plugin Management](./11-admin.md#115-system-plugin-management)
+
+ ---
+
+ ## Overview
+
+ | Property | Value |
+ |----------|-------|
+ | **Plugin Type** | Integration |
+ | **Author** | FilaMan |
+ | **Source** | [Fire-Devils/filaman-plugins](https://github.com/Fire-Devils/filaman-plugins) (Registry) |
+ | **API Path** | `/spoolman/api/v1/` |
+ | **Capabilities** | Spoolman API v1 compatibility, CRUD operations, CSV/JSON export, IP access control |
+
+ ---
+
+ ## What is Spoolman?
+
+ [Spoolman](https://github.com/Donkie/Spoolman) is a widely used open-source filament management system for 3D printing. Many tools in the 3D printing ecosystem (e.g. Moonraker, OctoPrint) support the Spoolman API for tracking filament usage and managing spools.
+
+ With this plugin, FilaMan can be used instead of Spoolman without needing to reconfigure external tools — they simply speak the same API.
+
+ ---
+
+ ## Configuring External Tools
+
+ ### Moonraker (Klipper)
+
+ Add the following to your `moonraker.conf`:
+
+ ```ini
+ [spoolman]
+ server: http://<filaman-host>:8000/spoolman
+ ```
+
+ Replace `<filaman-host>` with the IP address or hostname of your FilaMan installation.
+
+ ### OctoPrint
+
+ In the Spoolman plugin settings of OctoPrint, use the URL:
+
+ ```
+ http://<filaman-host>:8000/spoolman
+ ```
+
+ ### Other Tools
+
+ Any tool that supports the Spoolman API can be configured with the same URL:
+
+ ```
+ http://<filaman-host>:8000/spoolman/api/v1/
+ ```
+
+ ---
+
+ ## IP Access Control
+
+ The plugin provides **IP-based access control** that lets you restrict which devices are allowed to access the Spoolman API.
+
+ ### Settings
+
+ You can find the settings on the plugin page in the admin area under **Spoolman API**.
+
+ | Setting | Description |
+ |---------|-------------|
+ | **IP filter enabled** | Toggles IP access control on/off. **Disabled** by default (all IPs allowed). |
+ | **Allowed IPs** | List of allowed IP addresses or ranges |
+
+ ### Supported IP Formats
+
+ | Format | Example | Description |
+ |--------|---------|-------------|
+ | **Wildcard** | `*` | Allow all IPs |
+ | **Single IP** | `192.168.1.5` | Exact IP address |
+ | **CIDR range** | `192.168.1.0/24` | Entire subnet |
+ | **Large range** | `10.0.0.0/8` | Large network range |
+
+ > **Note:** When the IP filter is enabled and a non-allowed IP attempts access, the request is rejected with HTTP 403 (Forbidden).
+
+ ---
+
+ ## API Endpoints
+
+ All Spoolman endpoints are available under the path `/spoolman/api/v1/`:
+
+ ### System
+
+ | Method | Path | Description |
+ |--------|------|-------------|
+ | GET | `/info` | API information |
+ | GET | `/health` | Health check |
+
+ ### Vendors
+
+ | Method | Path | Description |
+ |--------|------|-------------|
+ | GET | `/vendor` | List all vendors |
+ | POST | `/vendor` | Create new vendor |
+ | GET | `/vendor/{id}` | Get vendor |
+ | PATCH | `/vendor/{id}` | Update vendor |
+ | DELETE | `/vendor/{id}` | Delete vendor |
+
+ ### Filaments
+
+ | Method | Path | Description |
+ |--------|------|-------------|
+ | GET | `/filament` | List all filaments |
+ | POST | `/filament` | Create new filament |
+ | GET | `/filament/{id}` | Get filament |
+ | PATCH | `/filament/{id}` | Update filament |
+ | DELETE | `/filament/{id}` | Delete filament |
+
+ ### Spools
+
+ | Method | Path | Description |
+ |--------|------|-------------|
+ | GET | `/spool` | List all spools |
+ | POST | `/spool` | Create new spool |
+ | GET | `/spool/{id}` | Get spool |
+ | PATCH | `/spool/{id}` | Update spool |
+ | DELETE | `/spool/{id}` | Delete spool |
+ | PUT | `/spool/{id}/use` | Use filament from spool |
+ | PUT | `/spool/{id}/measure` | Measure spool weight |
+
+ ### Additional Endpoints
+
+ | Method | Path | Description |
+ |--------|------|-------------|
+ | GET | `/material` | List material types |
+ | GET | `/location` | List locations |
+ | PATCH | `/location/{name}` | Rename location |
+ | GET | `/setting/{key}` | Get setting |
+ | POST | `/setting/{key}` | Set setting |
+
+ ### Export
+
+ | Method | Path | Description |
+ |--------|------|-------------|
+ | GET | `/export/spools` | Export spools (CSV/JSON) |
+ | GET | `/export/filaments` | Export filaments (CSV/JSON) |
+ | GET | `/export/vendors` | Export vendors (CSV/JSON) |
+ | POST | `/backup` | Create backup |
+
+ ---
+
+ ## Data Mapping
+
+ Spoolman API terms are mapped internally to the FilaMan data model:
+
+ | Spoolman Term | FilaMan Equivalent |
+ |--------------|-------------------|
+ | Vendor | Manufacturer |
+ | Filament | Filament |
+ | Spool | Spool |
+ | Location | Location |
+ | Extra Fields | Custom Fields |
+
+ ---
+
+ ← [Back: Plugin: SpoolmanDB Import](./15-plugin-spoolmandb.md) | [Next: More Plugins →](#)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9