Aller au contenu

Comparer et exporter

GET/v1/analytics/compare

Comparer des codes

GET /v1/analytics/compare prend codeIds (jusqu’à 4, séparés par des virgules) et les habituels range, tz et groupBy. La réponse contient une série par code sur les mêmes intervalles : ses points, ses totaux, la période précédente de même durée, l’écart par rapport à elle et la part du code dans les scans comparés.

Les codes que la clé ne peut pas voir reviennent dans omitted au lieu de faire échouer la requête. Un code statique figure avec tracked: false et zéro point, car ses scans ne sont pas comptés.

requêteGET /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_…"
réponse200 OKraccourci à trois jours ; il y a un point par jour de la période
{  "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": []}

Télécharger les scans en CSV

GET /v1/analytics/export répond avec le CSV lui-même (text/csv, en pièce jointe) pour les filtres des autres endpoints de statistiques : codeId ou codeIds, folderId, tagId, gtin, country et une période. kind choisit le fichier : daily_totals, scan_rows, breakdowns.

daily_totals est une ligne par période (ajoutez splitByCode=true pour une ligne par code), scan_rows une ligne par scan, et breakdowns liste chaque ligne des dimensions que vous indiquez. Les trois demandent un forfait avec export CSV ; scan_rows demande aussi les statistiques par scan. Les lignes plus anciennes que l’historique du forfait ne sont pas dans le fichier.

Au-delà de 10 000 lignes, la réponse est 413 payload_too_large avec details.reason use_export_job. Lancez alors une tâche d’export.

Grandes périodes : une tâche d’export

POST /v1/analytics/exports prend les mêmes filtres en corps JSON (kind est obligatoire) et prépare le fichier en arrière-plan, jusqu’à 1 000 000 lignes. Au-delà, c’est 413 avec details.reason too_many_rows : restreignez la période. Envoyez une Idempotency-Key.

La réponse est 202 avec un exportId. Interrogez GET /v1/exports/{id} jusqu’à ce qu’il soit prêt et lisez-y le lien de téléchargement. Un e-mail annonce aussi le fichier ; envoyez email: false pour l’éviter.

requêtePOST /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  }'
réponse202 Accepted
{  "exportId": "exp_2m7x4k9q1c8v3b6n",  "status": "queued"}