API HTTP
Controlla Beam Bench da qualsiasi client HTTP. È la stessa superficie usata dalla CLI.
L'API HTTP è la superficie di integrazione di Beam Bench. La maggior parte dei comandi CLI e dei client esterni usa queste route. Il frontend desktop chiama il servizio condiviso tramite Tauri IPC e non richiede il server HTTP per l'uso normale. Se hai un caso d'uso che richiede Beam Bench in un ambiente non CLI, come un'app web, un server di integrazione, un'app mobile o i tuoi strumenti, usa direttamente l'API.
L'API viene distribuita con l'app desktop ed è eseguita nello stesso processo. Non è necessario installare un servizio separato.
Impostazioni predefinite e sicurezza
Nella build attuale, il server API locale viene distribuito con queste impostazioni:
- API locale: disattivata.
- Porta API: 5900.
- Consenti la connessione ai dispositivi di rete: disattivata. Quando l'API è abilitata, si associa a
127.0.0.1e accetta connessioni solo da questo computer.
L'API non ascolta connessioni finché non scegli di abilitarla. L'accesso alla rete richiede una scelta separata perché l'API non usa autenticazione e include operazioni che possono muovere la macchina e attivare il laser.
Per usare l'API, modifica le relative impostazioni da Impostazioni → Generali:
- Apri l'app desktop.
- Modifica → Impostazioni → Generali.
- Attiva API locale.
- Lascia disattivata Consenti la connessione ai dispositivi di rete a meno che non debba connettersi un altro dispositivo attendibile.
Le modifiche hanno effetto immediato e non richiedono il riavvio.
URL di base
http://<host>:5900/api/v1<host> è localhost (o 127.0.0.1) quando Consenti la connessione ai dispositivi di rete è disattivata. Quando è attivata, il server è raggiungibile all'indirizzo IP LAN della macchina da qualsiasi dispositivo della rete.
La porta è configurabile in Impostazioni → Generali; 5900 è il valore predefinito.
Autenticazione
Nessuna. L'API non usa token, chiavi o accesso.
- Con l'associazione a localhost, il modello di accesso a livello di sistema operativo costituisce il confine: qualsiasi processo sul computer può comunicare con l'API.
- Con l'associazione alla rete attivata, chiunque si trovi sulla stessa rete può comunicare con l'API. Non usare la modalità di associazione alla rete su reti Wi-Fi non attendibili.
Formato delle richieste
Tutti i corpi delle richieste POST/PATCH/PUT sono JSON:
Content-Type: application/jsonLe stringhe di query sono coppie piatte chiave=valore. I segmenti del percorso vengono codificati nell'URL come di consueto.
Involucro delle risposte
Le risposte riuscite restituiscono direttamente il corpo della risorsa, senza involucro:
{
"field": "value",
"...": "..."
}Gli errori restituiscono un involucro uniforme:
{
"error": {
"code": "invalid_input",
"message": "Human-readable summary of what went wrong.",
"details": { "...optional structured context..." }
}
}error.code può essere uno dei seguenti:
| Codice | HTTP | Significato |
|---|---|---|
not_found | 404 | La risorsa richiesta non esiste. |
invalid_input | 400 | Il corpo o i parametri della richiesta non erano validi o sono stati rifiutati. |
invalid_state | 412 | L'app non si trova in uno stato in cui questa operazione ha senso, per esempio non c'è alcun progetto aperto. |
busy | 409 | Un'operazione in conflitto è già in corso. |
conflict | 409 | Un altro autore ha modificato la risorsa dall'ultima lettura. |
stale_revision | 412 | Il token di revisione è precedente a quello corrente. Rileggi e riprova. |
machine_io | 502 | La connessione alla macchina non è riuscita, a causa di disconnessione, timeout o errore di trasporto. |
persistence | 500 | La lettura o la scrittura del disco non è riuscita. |
internal | 500 | Errore imprevisto del server. Segnalalo come bug. |
Errori che richiedono conferma
Un piccolo insieme di operazioni può muovere la macchina o attivare il laser. Questi endpoint richiedono un flag di conferma esplicito nel corpo della richiesta. Se manca, l'API restituisce 428 Precondition Required:
{
"error_code": "CONFIRMATION_REQUIRED",
"missing": ["confirm_motion"],
"message": "This command can move the machine and requires explicit confirmation."
}Invia nuovamente la richiesta con il flag indicato impostato su true. I flag attualmente in uso sono confirm_motion, confirm_laser_on, confirm_raw_gcode e confirm_air_assist.
Modifiche simultanee al progetto
Le transazioni di Design confrontano il progetto acquisito al momento del commit. Una modifica simultanea, un cambio di progetto o una chiusura possono restituire stale_revision. Aggiorna lo stato e rivaluta la modifica prima di riprovare. Non riprodurre alla cieca una vecchia istantanea del progetto sopra un lavoro più recente.
Gruppi di endpoint
| Percorso | Cosa include |
|---|---|
/api/v1/app | Informazioni a livello di app: versione, tempo di attività, funzionalità. |
/api/v1/agent | Schema delle funzionalità dell'agente, istantanea dello stato e guida operativa. |
/api/v1/projects | Apertura, salvataggio e chiusura. Livelli, oggetti, annullamento e ripristino. |
/api/v1/projects/import | Importazione di file LightBurn, SVG, DXF, PDF, AI, EPS e raster. Una route dedicata gestisce l'importazione limitata della geometria G-code. |
/api/v1/export | Rendering di un progetto in SVG, DXF, PDF, EPS e AI. |
/api/v1/design | Descrizione del Design corrente, rendering in PNG e applicazione di modifiche transazionali. |
/api/v1/preview | Generazione di anteprime dei tagli e statistiche. |
/api/v1/jobs | Controllo preliminare, esecuzione, simulazione, pausa, ripresa, contornatura e arresto. |
/api/v1/machine | Connessione, disconnessione, stato, movimento incrementale e azzeramento. |
/api/v1/camera | Dispositivi, stato, acquisizione, sovrapposizione, inclusi visualizzazione, trasformazione e rendering, calibrazione e allineamento. |
/api/v1/console | Invio di G-code grezzo e lettura del log recente della console. |
/api/v1/macros | Elenco, salvataggio ed esecuzione delle macro utente. |
/api/v1/materials | Libreria materiali: preimpostazioni indicizzate per materiale e spessore. |
/api/v1/profiles | Profili macchina: creazione, elenco e applicazione. |
/api/v1/assets | Accesso alle risorse della Libreria grafica. |
/api/v1/vector | Operazioni vettoriali: conversione, operazioni booleane, raggruppamento e tracciato. |
/api/v1/events | Flusso WebSocket delle modifiche di stato e degli eventi della macchina. |
Le pagine di riferimento per singola risorsa sono ancora in lavorazione; nel frattempo consulta lo schema delle funzionalità dell'agente.
Scoprire la superficie attiva
Il modo più rapido per vedere cosa espone la versione installata:
curl -s http://localhost:5900/api/v1/agent/capabilities | jq .Restituisce lo schema completo delle funzionalità, inclusi tutti gli endpoint, i relativi parametri e la forma delle risposte. Lo schema è la descrizione autorevole; questa pagina ne è una guida.
Per l'introspezione dello stato:
curl -s http://localhost:5900/api/v1/agent/state | jq .Per una guida scritta su come controllare l'app:
curl -s http://localhost:5900/api/v1/agent/guideVersionamento
Tutte le route sono contenute in /api/v1. Quando si verificano modifiche incompatibili, vengono usate /api/v2. Le modifiche additive, come nuovi endpoint e nuovi campi facoltativi, vengono distribuite in v1 senza incrementare la versione.
Correlati
- Guida all'uso dell'API HTTP: introduzione in stile tutorial con esempi svolti.
- Come CLI e app condividono lo stato: il modello di coerenza alla base di questi endpoint.
- Impostazioni → Generali: dove abilitare l'API e scegliere la porta.