{ "info": { "name": "Counter API", "description": "Real HTTP surface of Counter (counter.dev), an open-source, privacy-friendly web analytics service (AGPL-3.0). Tracking endpoints are public; stats endpoints use a session cookie or a user + token pair. Endpoints derived from the project source at github.com/ihucos/counter.dev.", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "item": [ { "name": "Tracking", "item": [ { "name": "Record an aggregated visit.", "request": { "method": "GET", "header": [ { "key": "Origin", "value": "https://example.com", "description": "Required. Used to derive the site id." } ], "url": { "raw": "https://t.counter.dev/track?id=&referrer=&screen=&utcoffset=", "protocol": "https", "host": ["t", "counter", "dev"], "path": ["track"], "query": [ { "key": "id", "value": "", "description": "Site data-id (per-account cached UUID)." }, { "key": "referrer", "value": "", "description": "Document referrer URL; only the host is retained." }, { "key": "screen", "value": "", "description": "Screen resolution WIDTHxHEIGHT." }, { "key": "utcoffset", "value": "", "description": "Client UTC offset." } ] }, "description": "Records a single aggregated visit. No cookies set, no IP stored. Returns plain text OK." }, "response": [] }, { "name": "Record a pageview.", "request": { "method": "POST", "header": [ { "key": "Origin", "value": "https://example.com", "description": "Required. Used to derive the site id." }, { "key": "Content-Type", "value": "application/x-www-form-urlencoded" } ], "body": { "mode": "urlencoded", "urlencoded": [ { "key": "id", "value": "", "description": "Site data-id." }, { "key": "page", "value": "", "description": "Page path (window.location.pathname)." } ] }, "url": { "raw": "https://t.counter.dev/trackpage", "protocol": "https", "host": ["t", "counter", "dev"], "path": ["trackpage"] }, "description": "Records a pageview via the Beacon API. Returns 204." }, "response": [] } ] }, { "name": "Stats", "item": [ { "name": "Query archived stats for a date range.", "request": { "method": "GET", "header": [], "url": { "raw": "https://counter.dev/query?from=&to=&user=&token=", "protocol": "https", "host": ["counter", "dev"], "path": ["query"], "query": [ { "key": "from", "value": "", "description": "Start date YYYY-MM-DD." }, { "key": "to", "value": "", "description": "End date YYYY-MM-DD." }, { "key": "user", "value": "", "description": "Account user id (sessionless token access)." }, { "key": "token", "value": "", "description": "Read-only API token (paired with user)." } ] }, "description": "Returns aggregated archived visit data as JSON. Auth by session cookie or user + token." }, "response": [] }, { "name": "Stream live and archived stats (Server-Sent Events).", "request": { "method": "GET", "header": [ { "key": "Accept", "value": "text/event-stream" } ], "url": { "raw": "https://counter.dev/dump?utcoffset=&user=&token=", "protocol": "https", "host": ["counter", "dev"], "path": ["dump"], "query": [ { "key": "utcoffset", "value": "", "description": "Client UTC offset." }, { "key": "user", "value": "", "description": "Account user id (sessionless token access)." }, { "key": "token", "value": "", "description": "Read-only API token (paired with user)." } ] }, "description": "Server-Sent Events stream of archive and live dump payloads. One-way HTTP streaming, not WebSocket." }, "response": [] } ] }, { "name": "Account", "item": [ { "name": "Register a new account.", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/x-www-form-urlencoded" } ], "body": { "mode": "urlencoded", "urlencoded": [ { "key": "user", "value": "", "description": "Username (account id)." }, { "key": "password", "value": "", "description": "Password." }, { "key": "mail", "value": "", "description": "Optional email." }, { "key": "utcoffset", "value": "", "description": "Optional UTC offset preference." } ] }, "url": { "raw": "https://counter.dev/register", "protocol": "https", "host": ["counter", "dev"], "path": ["register"] }, "description": "Creates a new account and establishes a session." }, "response": [] }, { "name": "Log in and establish a session.", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/x-www-form-urlencoded" } ], "body": { "mode": "urlencoded", "urlencoded": [ { "key": "user", "value": "", "description": "Username." }, { "key": "password", "value": "", "description": "Password." } ] }, "url": { "raw": "https://counter.dev/login", "protocol": "https", "host": ["counter", "dev"], "path": ["login"] }, "description": "Authenticates and sets a session cookie." }, "response": [] }, { "name": "Log out of the current session.", "request": { "method": "POST", "header": [], "url": { "raw": "https://counter.dev/logout", "protocol": "https", "host": ["counter", "dev"], "path": ["logout"] }, "description": "Clears the current session." }, "response": [] }, { "name": "Reset the account read token.", "request": { "method": "POST", "header": [], "url": { "raw": "https://counter.dev/resettoken", "protocol": "https", "host": ["counter", "dev"], "path": ["resettoken"] }, "description": "Resets the read-only API token. Requires an authenticated session." }, "response": [] } ] } ] }