QR redirects
Keep a migrating network's existing QR stickers working. Import each sticker's code (its old path, a code or the charger ID) per project, point the network's QR hostname at Ivora (/v1/tenants/{tenant_id}/qr-domains, the same pipeline as payment domains) or use Ivora's scan URL, and every scan follows the charger proxy's flip: not yet migrated to the old platform's URL, migrated to the Ivora checkout page for that charger, back again on rollback. Unknown codes land on a branded find-your-charger page. Destinations are allowlisted per project (the Ivora checkout origin and the configured old-platform origins). Scans are counted per charger and outcome without personal data. Requires stations:read or stations:write. QR domains are not yet available in production.
15 endpoints
- getList custom QR domains and DNS/TLS readiness/v1/tenants/{tenant_id}/qr-domains
- postPrepare a tenant QR domain and its two DNS records/v1/tenants/{tenant_id}/qr-domainsIdempotent by tenant and normalized hostname.
- getRead one QR domain setup/v1/tenants/{tenant_id}/qr-domains/{domain_id}
- deleteDisable this QR domain/v1/tenants/{tenant_id}/qr-domains/{domain_id}Scans on this hostname show a neutral "not active" page at once; stickers stay imported.
- postCheck public DNS ownership and direct routing/v1/tenants/{tenant_id}/qr-domains/{domain_id}/verifyDNS verification (dns verified) does not mean TLS is active.
- getRead the QR redirect settings/v1/tenants/{tenant_id}/qr/settings
- putSet the old platform's origins, URL template and default route/v1/tenants/{tenant_id}/qr/settingsValidated on save: each origin is https and a public hostname only (no path, port, IP address or user information), stored in ASCII form; the template's host must be one of them.
- getList the project's imported stickers/v1/tenants/{tenant_id}/qr/stickers
- postImport stickers from the old platform (CSV)/v1/tenants/{tenant_id}/qr/stickers/importAll or nothing, idempotent by code: a code already stored is updated, a new one created.
- deleteRemove one sticker/v1/tenants/{tenant_id}/qr/stickers/{sticker_id}A scan of its code then falls back to the charger ID lookup, else the find-your-charger page.
- getWhere each charger connects, as scans follow it/v1/tenants/{tenant_id}/qr/charger-routesWritten by the proxy's flips (site flips and per-charger reports); read-only for the project.
- putReport where the proxy routes one of the project's chargers now/v1/tenants/{tenant_id}/qr/charger-routesThe project's charger proxy key (migration:proxy, made by Ivora administrators, bound to this project) or Ivora platform administrators; team roles and other keys are refused (the project reads the routes, the proxy writes them).
- getScan counts by day, charger and outcome/v1/tenants/{tenant_id}/qr/scansCounts only: no address, device or scanned text is stored.
- getPreview what a scan of a code does now (not counted)/v1/tenants/{tenant_id}/qr/resolveThe same decision a scan makes: outcome, the destination and the charger.
- getAsk whether a sticker's charger moved to Ivora (public, for your own website)/v1/qr-lookup/{tenant_id}Public and read-only, for the page of your own website that your QR stickers open: it asks whether that sticker's charger moved, and sends the driver to the Ivora checkout if so.



