API di stampa
Usa un service account del workspace per ottenere un token di accesso e accodare job di stampa tramite l'API Labels.
Superficie di integrazione supportata
L'integrazione esterna documentata è POST /v2/jobs. Accetta ID template salvato, percorso stampante, formato, orientamento, numero copie e dati dinamici.
Le altre route API sono usate dall'applicazione web Labels e dall'Agente di Stampa. Considerale interne salvo che il contratto del deployment le esponga esplicitamente.
Ottieni un token di accesso
- 1
Copia la configurazione di integrazione
Registra URL token, audience, scope, ID tenant, endpoint di stampa, chiave API e segreto API mostrato una sola volta.
- 2
Richiedi un token client credentials
Invia la chiave API come client_id e il segreto come client_secret all'URL token mostrato nella configurazione dell'integrazione.
- 3
Mantieni il token temporaneo
Conservalo solo fino alla scadenza, poi richiedine uno nuovo. Non inserire mai il segreto API in URL o log.
curl --request POST "$DOORMAN_TOKEN_URL" \
--header "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=client_credentials" \
--data-urlencode "client_id=$LABELS_API_KEY" \
--data-urlencode "client_secret=$LABELS_API_SECRET" \
--data-urlencode "audience=$DOORMAN_AUDIENCE" \
--data-urlencode "scope=$DOORMAN_SCOPE"Header della richiesta
| Header | Valore |
|---|---|
| Authorization | Bearer <access_token> |
| Content-Type | application/json |
| x-tenant | L'ID tenant mostrato nella configurazione di integrazione |
| Idempotency-Key | Per POST /v2/jobs: una chiave stabile dell'evento applicativo, riusata solo per retry identici. |
Payload del job di stampa
| Campo | Descrizione |
|---|---|
| idT | ID del template salvato. |
| printerId | ID stampante rilevato dall'agente. Da preferire quando disponibile. |
| printer | Nome stampante. Usato come percorso di riserva e conservato nel job. |
| format | Nome o ID del formato stampante selezionato. |
| orientation | portrait o landscape. |
| numberCopies | Numero positivo di copie per ogni record etichetta. |
| data | Array di oggetti con chiavi uguali ai nomi esatti dei campi dinamici. |
Valida senza stampare
Invia lo stesso payload a POST /v2/jobs/validate prima di accodarlo. Verifica forma, accesso al workspace, template, percorso stampante, assegnazione agent e nomi dei campi dinamici.
La validazione non è distruttiva: non crea né stampa job e non consuma la quota. Controlla gli avvisi sui campi mancanti o sconosciuti prima dell'uso in produzione.
curl --request POST "$LABELS_API_BASE/v2/jobs/validate" \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--header "x-tenant: $LABELS_TENANT_ID" \
--data @print-job.jsonMetti un job in coda
Con dati dinamici la risposta corretta è un array con l'ID del job accodato. Una richiesta con solo template può restituire un singolo ID. Conservalo per assistenza e correlazione.
curl --request POST "$LABELS_PRINT_ENDPOINT" \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--header "x-tenant: $LABELS_TENANT_ID" \
--header "Idempotency-Key: shipment-2026-0042" \
--data '{
"idT": "template-id",
"printerId": "printer-id",
"printer": "Production Printer",
"format": "100 x 50 mm",
"orientation": "landscape",
"numberCopies": 1,
"data": [
{
"batch": "A1",
"lotNumber": "LOT-2026-0042"
}
]
}'Risposte comuni
| Stato | Significato |
|---|---|
| 200 / 201 | Il job è stato accodato; la risposta contiene uno o più ID. |
| 400 | Contesto tenant o dati della richiesta mancanti o non validi. |
| 401 | Token bearer mancante, scaduto o non valido. |
| 403 | Il service account non ha jobs:enqueue, il tenant è vietato o la quota blocca la richiesta. |
| 404 | Il template indicato non esiste nel tenant. |
| 500 | Il server non ha accodato il job. Registra errore e contesto, senza credenziali. |