Upload desktop app icons
Store the key owner's app icons, rendered on their Mac, so activity shows familiar icons without a third-party logo service.
POST /api/v1/activity/app-icons
Required scope: activity:classify
Request
POST https://www.tracktimer.app/api/v1/activity/app-icons with Authorization: Bearer YOUR_API_KEY and Content-Type: application/json. Send 1–12 icons. Each has a bundleId, a macOS bundle identifier of 1–255 letters, digits, periods, hyphens, or underscores that starts with a letter or digit, and png, the base64-encoded image. Each decoded PNG must start with the PNG signature, be square from 16 to 256 pixels, and be at most 48 KB; 64 × 64 works well. The complete body is limited to 1048576 bytes. Unknown fields are rejected.
Upload the bundle IDs a sync response lists in missingApplicationIcons. Uploading a bundle ID again replaces its icon, so repeating a request is safe.
{"icons":[{"bundleId":"com.apple.Terminal","png":"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGUlEQVR42mP4H2P6nxLMMGrAqAGjBgwXAwDdfo8f7oZ/xwAAAABJRU5ErkJggg=="}]}
Response — 200
{"saved":1}
saved counts the distinct bundle IDs stored.
Privacy and errors
Icons are stored for the key's user and workspace, and only that person sees them in My Time. TrackTimer never requests app icons or logos from a third party. Authentication/scope failures return 401/403; malformed JSON, invalid bundle IDs, or icons that are not square 16–256 pixel PNGs of at most 48 KB return 400; oversized bodies return 413; non-JSON content returns 415; shared rate limits return 429. Retry transport and 5xx failures with bounded backoff. See authentication and errors and retries.