Vai al contenuto

Confronta ed esporta

GET/v1/analytics/compare

Confrontare i codici

GET /v1/analytics/compare accetta codeIds (fino a 4, separati da virgole) e i consueti range, tz e groupBy. La risposta contiene una serie per codice sugli stessi intervalli: i suoi punti, i suoi totali, il periodo precedente della stessa durata, la variazione rispetto a esso e la quota del codice sulle scansioni confrontate.

I codici che la chiave non può vedere tornano in omitted invece di far fallire la richiesta. Un codice statico compare con tracked: false e zero punti, perché le sue scansioni non vengono conteggiate.

richiestaGET /v1/analytics/compare
curl "https://api.dotwick.com/v1/analytics/compare?codeIds=qr_8841ce2mxk%2Cqr_2k8m4q7x1c9v&range=7d&tz=Europe%2FBerlin" \  -H "Authorization: Bearer sk_live_…"
risposta200 OKridotto a tre giorni; c’è un punto per ogni giorno del periodo
{  "groupBy": "day",  "tz": "Europe/Berlin",  "from": "2026-09-09T00:00:00+02:00",  "to": "2026-09-12T00:00:00+02:00",  "previous": {    "from": "2026-09-06T00:00:00+02:00",    "to": "2026-09-09T00:00:00+02:00"  },  "buckets": [    "2026-09-09T00:00:00+02:00",    "2026-09-10T00:00:00+02:00",    "2026-09-11T00:00:00+02:00"  ],  "series": [    {      "codeId": "qr_8841ce2mxk",      "name": "Van fleet – unit 14",      "tracked": true,      "points": [        {          "ts": "2026-09-09T00:00:00+02:00",          "scans": 40,          "uniques": 31        },        {          "ts": "2026-09-10T00:00:00+02:00",          "scans": 52,          "uniques": 44        },        {          "ts": "2026-09-11T00:00:00+02:00",          "scans": 58,          "uniques": 47        }      ],      "totals": {        "scans": 150,        "uniques": 122,        "bots": 3      },      "previous": {        "scans": 100,        "uniques": 80      },      "deltas": {        "scans": 0.5,        "uniques": 0.525      },      "share": 0.75    },    {      "codeId": "qr_2k8m4q7x1c9v",      "name": "Van fleet – unit 15",      "tracked": true,      "points": [        {          "ts": "2026-09-09T00:00:00+02:00",          "scans": 12,          "uniques": 10        },        {          "ts": "2026-09-10T00:00:00+02:00",          "scans": 20,          "uniques": 17        },        {          "ts": "2026-09-11T00:00:00+02:00",          "scans": 18,          "uniques": 15        }      ],      "totals": {        "scans": 50,        "uniques": 42,        "bots": 0      },      "previous": {        "scans": 60,        "uniques": 51      },      "deltas": {        "scans": -0.167,        "uniques": -0.176      },      "share": 0.25    }  ],  "omitted": []}

Scaricare le scansioni in CSV

GET /v1/analytics/export risponde con il CSV stesso (text/csv, come allegato) per i filtri degli altri endpoint delle statistiche: codeId o codeIds, folderId, tagId, gtin, country e un periodo. kind sceglie il file: daily_totals, scan_rows, breakdowns.

daily_totals è una riga per periodo (aggiungi splitByCode=true per una riga per codice), scan_rows una riga per scansione, e breakdowns elenca ogni riga delle dimensioni che indichi. Tutti e tre richiedono un piano con esportazione CSV; scan_rows richiede anche le statistiche per singola scansione. Le righe più vecchie dello storico del piano non sono nel file.

Oltre 10.000 righe la risposta è 413 payload_too_large con details.reason use_export_job. Avvia invece un job di esportazione.

Periodi lunghi: un job di esportazione

POST /v1/analytics/exports accetta gli stessi filtri come corpo JSON (kind è obbligatorio) e prepara il file in background, fino a 1.000.000 righe. Oltre è 413 con details.reason too_many_rows: restringi il periodo. Invia una Idempotency-Key.

La risposta è 202 con un exportId. Interroga GET /v1/exports/{id} finché non è pronto e leggi da lì il link di download. Anche un’email annuncia il file; invia email: false per saltarla.

richiestaPOST /v1/analytics/exports
curl -X POST https://api.dotwick.com/v1/analytics/exports \  -H "Authorization: Bearer sk_live_…" \  -H "Content-Type: application/json" \  -H "Idempotency-Key: van-014-scans-q3" \  -d '{    "kind": "scan_rows",    "range": "90d",    "tz": "Europe/Berlin",    "codeIds": [      "qr_8841ce2mxk"    ],    "email": false  }'
risposta202 Accepted
{  "exportId": "exp_2m7x4k9q1c8v3b6n",  "status": "queued"}