Documentazione
Tutto quello che serve per integrare le tariffe dei tabacchi lavorati e i codici a barre nel tuo software: una guida rapida qui sotto e le pagine di riferimento per ogni argomento. Tutti gli esempi usano dati di fantasia.
Chiavi API
Crearle dall'account, inviarle nelle richieste, revocarle.
ApriRiferimento API
Endpoint, intestazioni, codici di stato, errori, esempi curl e risposte.
ApriFormati e schema
Campi di JSON, tabelle SQLite, collezioni BLite e controllo delle versioni.
ApriCodici a barre
Validazione GS1, quorum di tre contributori, stati e conflitti.
ApriLimiti e uso corretto
10 letture al giorno, 100 barcode all'ora, cache consigliata.
ApriProduttori
Verifica dell'azienda, perimetro, formato del CSV e rapporto degli scarti.
ApriPrincipi
- Scarica l'archivio una volta al giorno e usalo in locale. L'API non è pensata per consultazioni in tempo reale.
- Ogni account ha 10 letture al giorno (giorno UTC) e 100 barcode all'ora in invio. Sono due contatori separati e contano tutte le chiavi dell'account insieme.
- Un consumatore tipico usa due letture al giorno: una per sapere se c'è una versione nuova, una per scaricarla.
- Fonte dei prezzi: Agenzia delle Dogane e dei Monopoli (ADM). Servizio indipendente, non affiliato né approvato dall'ADM.
Guida rapida
-
Accedi e crea una chiave
Richiedi il link di accesso da /login, poi dalla pagina del tuo account crea una chiave con un'etichetta (ad esempio il nome del tuo software). La chiave
otb_…si vede una volta sola. Dettagli in Chiavi API. -
Controlla la versione corrente
Costa una lettura. Confronta
curlversioncon quella che hai già salvato: se è uguale, hai finito per oggi.
risposta 200curl -H "Authorization: Bearer otb_la_tua_chiave" https://opentabacchi.org/v1/version{ "version": "20261014.2", "tariffDate": "2026-10-14", "generatedAt": "2026-10-14T09:00:00+00:00", "source": "Agenzia delle Dogane e dei Monopoli (ADM)", "schemaVersion": 1, "counts": { "products": 4343, "barcodes": 120 }, "files": { "json": { "url": "https://opentabacchi.org/v1/dataset.json.gz", "sha256": "9f2c…", "size": 83912 }, "sqlite": { "url": "https://opentabacchi.org/v1/dataset.sqlite.gz", "sha256": "4b71…", "size": 161280 }, "blite": { "url": "https://opentabacchi.org/v1/dataset.blite.gz", "sha256": "c0de…", "size": 346112, "bliteVersion": "5.2.3", "schemaVersion": 1 } } } -
Scarica il file nel formato che preferisci
Un'altra lettura. I tre file hanno lo stesso contenuto. Salva anche l'
curlETagdella risposta: alla prossima chiamata, conIf-None-Match, riceverai304se non è cambiato nulla.curl -H "Authorization: Bearer otb_la_tua_chiave" \ -o opentabacchi.json.gz https://opentabacchi.org/v1/dataset.json.gz gunzip opentabacchi.json.gz -
Verifica l'impronta e importa
Confronta lo SHA-256 del file compresso con quello del manifest, poi carica i dati nel tuo database. Ogni prodotto ha questa forma (nel JSON; gli stessi campi esistono in SQLite e BLite):
{ "admCode": 12345, "name": "PRODOTTO DI ESEMPIO", "category": "Sigarette", "packaging": "Confezione da 20 pezzi", "packSize": 20, "packUnit": "pieces", "pricePerKg": 270.00, "priceCents": 540, "nextPriceCents": null, "nextPricePerKg": null, "nextEffectiveFrom": null, "status": "active" }Il significato di ogni campo e lo schema delle tabelle sono in Formati e schema.
-
Alla vendita, risolvi il codice a barre in locale
Cerca il codice letto nella tabella dei codici a barre del tuo database, risali al codice AAMS e applica
priceCents. Se il codice non è noto, puoi proporre l'abbinamento conPOST /v1/barcodes: il tuo contributo, insieme a quello di altri due utenti, lo rende pubblico. Vedi Codici a barre.
Cosa succede se superi un limite
L'API risponde 429 con l'intestazione Retry-After e un corpo JSON con error: "rate_limited". Nessuna chiamata viene elaborata parzialmente. Le intestazioni X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset accompagnano ogni risposta, così il tuo software sa sempre quante letture restano. Dettagli in Limiti e uso corretto.