Analytics
Public event tracking (POST /profile/interactions) + owner dashboard (GET /profile/analytics)
Event tracker (public)
POST /profile/interactions — device, OS, browser and country are derived server-side from the User-Agent and IP. Throttle: 60/min per IP.
UUID of a public profile. 404 PROFILE_NOT_FOUND = unknown OR private profile.
Optional, ≤255 chars.
Optional. Must be an http/https URL — anything else is a 422.
Optional, ≤120 chars. What the item ranking shows instead of the raw target_id.
Minted by POST /profile/visitors and kept in localStorage["selenial_qa_visitor_hash"]. The backend resolves it instead of trusting it, so repeat events count as ONE unique visitor.
Mint a token before testing duplicate suppression — the backend only deduplicates events it can resolve to an issued token. Use unknown sends a UUID the backend never issued: it still records today, and returns recorded: false, UNKNOWN_VISITOR once ANALYTICS_REQUIRE_VISITOR_TOKEN is on.
Owner dashboard
GET /profile/analytics — requires auth. Empty dates = backend default (last 30 days). Max range 366 days, hourly capped at 31.