Elenca i preventivi
status, per cliente con customer_id, per veicolo con vehicle_id
e per periodo con from / to. La paginazione usa un cursore opaco:
passa next_starting_after invariato in starting_after e fermati
quando has_more è false.
Nuovo stato draft (bozza): ogni preventivo nuovo nasce in bozza e passa a waiting quando lo si segna come inviato o quando parte un messaggio al cliente. Il filtro status accetta draft. Le revisioni precedenti vedono le bozze come waiting, anche nel filtro.
Nuovo campo expires_at: la data scadenza del preventivo (YYYY-MM-DD, null = nessuna scadenza).
Nuovi campi work_category_ids e work_categories: tutte le categorie del documento, nell'ordine scelto (work_category_id riporta il primo, per i client che ne gestiscono uno solo).
- 200
- Una pagina di preventivi.
- 401
- Chiave API mancante, non valida, revocata o scaduta.
- 402
- Il piano non include l'accesso API, oppure non è attivo un abbonamento.
- 403
- La chiave non ha il permesso richiesto per questa operazione.
- 415
- Il Content-Type deve essere application/json e Accept deve accettare JSON.
- 422
- Un campo della richiesta manca o non è valido: «param» indica quale.
- 500
- Errore imprevisto del server. Il dettaglio finisce nei log, non nella risposta.
curl https://api.officina.it/v1/quotes \ -H "Authorization: Bearer ofk_live_LA_TUA_CHIAVE" \ -H "X-API-Version: 2026-10-31"
{
"object": "list",
"data": [
{
"object": "quote",
"id": "b93f7c25-4a18-4e60-9d37-8c1b5f2a6e04",
"seq_number": 87,
"status": "waiting",
"title": "Preventivo tagliando",
"customer_id": "4c911f08-7713-4e83-bdf6-a0692a1b43fd",
"customer_name": "Mario Rossi",
"vehicle_id": "8821f0ac-5d2b-41e7-9a10-6c3f2b7d4e55",
"vehicle_name": "Fiat Panda",
"vehicle_license": "AB123CD",
"work_category_id": null,
"work_category_name": null,
"work_category_ids": [],
"work_categories": [],
"km": 61240,
"expires_at": "2026-08-15",
"worksheet_id": null,
"worksheet_seq_number": null,
"total_before_tax": 70.0,
"total_tax": 15.4,
"total_after_tax": 85.4,
"total_discount": 0,
"hide_discounts": false,
"created_at": "2026-07-10T09:14:00Z",
"updated_at": "2026-07-10T09:20:00Z"
}
],
"has_more": true,
"next_starting_after": "eyJvIjoyMH0",
"url": "/v1/quotes",
"date_filter": {
"object": "date_filter",
"preset": "year",
"from": "2026-01-01",
"to": "2026-12-31"
}
}