API HTTP
Controlla Beam Bench da qualsiasi client HTTP. La stessa interfaccia usata dalla CLI.
L'API HTTP è l'interfaccia di integrazione per Beam Bench. L'app desktop, la CLI e qualsiasi client esterno comunicano tutti con gli stessi percorsi. Se hai un caso d'uso che richiede Beam Bench in un ambiente diverso dalla CLI (app web, server di integrazione, app mobile, i tuoi strumenti), usa direttamente l'API.
L'API viene distribuita con l'app desktop ed è eseguita nel processo. Non è necessario installare un servizio separato.
Impostazioni predefinite e sicurezza
Nella build corrente, 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 resta in ascolto per le connessioni finché non scegli di attivarla. L'abilitazione dell'accesso di rete richiede un consenso separato perché l'API non dispone di autenticazione e include operazioni che possono spostare la macchina e attivare il laser.
Per usare l'API, modifica le sue 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; non è necessario riavviare.
URL di base
http://<host>:5900/api/v1<host> è localhost (oppure 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 dispone di token, chiave o accesso.
- Con l'associazione a localhost, il modello di accesso a livello di sistema operativo costituisce il confine: qualsiasi processo sulla tua macchina può comunicare con l'API.
- Con l'associazione di rete abilitata, chiunque nella stessa rete può comunicare con l'API. Non usare la modalità di associazione di rete su una rete Wi-Fi non attendibile.
Formato delle richieste
Tutti i corpi POST/PATCH/PUT sono JSON:
Content-Type: application/jsonLe stringhe di query sono coppie chiave=valore semplici. I segmenti di percorso sono codificati come URL secondo la consuetudine.
Involucro della risposta
Le risposte riuscite restituiscono direttamente il corpo della risorsa, senza involucro:
{
"field": "value",
"...": "..."
}Gli errori restituiscono un involucro uniforme:
{
"error": {
"code": "InvalidInput",
"message": "Human-readable summary of what went wrong.",
"details": { "...optional structured context..." }
}
}error.code è uno dei seguenti:
| Codice | HTTP | Significato |
|---|---|---|
NotFound | 404 | La risorsa richiesta non esiste. |
InvalidInput | 400 | Il corpo della richiesta o i parametri non erano validi oppure sono stati rifiutati. |
InvalidState | 412 | L'app non si trova in uno stato in cui questa operazione è sensata (ad es. nessun progetto aperto). |
Busy | 409 | È già in corso un'operazione in conflitto. |
Conflict | 409 | Un altro autore ha modificato la risorsa dall'ultima lettura. |
StaleRevision | 412 | Il tuo token di revisione è precedente a quello corrente. Rileggi e riprova. |
MachineIo | 502 | La connessione alla macchina non è riuscita (disconnessione, timeout, errore di trasporto). |
Persistence | 500 | La scrittura o la lettura dal disco non è riuscita. |
Internal | 500 | Errore del server imprevisto. Segnalalo come bug. |
Errori che richiedono conferma
Un piccolo insieme di operazioni può spostare 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 di nuovo 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.
Gruppi di endpoint
| Percorso | Cosa include |
|---|---|
/api/v1/app | Informazioni a livello di app: versione, tempo di attività, funzionalità. |
/api/v1/agent | Schema delle capacità dell'agente, istantanea dello stato e guida operativa. |
/api/v1/projects | Apri, salva, chiudi. Livelli, oggetti, annulla/ripeti. |
/api/v1/projects/import | Importa SVG, DXF, PDF, AI e immagini raster in un progetto. |
/api/v1/export | Esporta un progetto in SVG, DXF, PDF, EPS, AI. |
/api/v1/design | Descrivi il progetto corrente, esporta in PNG, applica modifiche transazionali. |
/api/v1/preview | Genera anteprime di taglio e statistiche. |
/api/v1/jobs | Controllo preliminare, esegui, esecuzione a secco, pausa, riprendi, inquadra, arresta. |
/api/v1/machine | Connetti, disconnetti, stato, movimento manuale, homing. |
/api/v1/camera | Dispositivi, stato, acquisizione, sovrapposizione (visualizza, trasforma, renderizza), calibrazione, allineamento. |
/api/v1/console | Invia G-code non elaborato. Leggi il registro recente della console. |
/api/v1/macros | Elenca, salva ed esegui macro utente. |
/api/v1/materials | Libreria materiali: preimpostazioni indicizzate per materiale e spessore. |
/api/v1/profiles | Profili macchina: crea, elenca, applica. |
/api/v1/assets | Accesso alle risorse della Libreria grafica. |
/api/v1/vector | Operazioni vettoriali: converti, booleane, raggruppa, tracciato. |
/api/v1/events | Flusso WebSocket di modifiche dello stato ed eventi della macchina. |
Le pagine di riferimento per risorsa sono in corso di sviluppo; nel frattempo consulta lo schema delle capacità dell'agente.
Scopri l'interfaccia disponibile
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 capacità, inclusi ogni endpoint, i relativi parametri e la forma della risposta. Lo schema è la descrizione autorevole; questa pagina è una guida.
Per l'ispezione 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
Tutti i percorsi sono sotto /api/v1. Le modifiche incompatibili saranno in /api/v2 quando verranno introdotte. Le modifiche additive (nuovi endpoint, nuovi campi facoltativi) vengono distribuite in v1 senza incremento di 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.